summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 16:48:20 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 16:48:20 +0000
commit917de4a98eeb9a7eafeab7ddd8e1b1ae6aae6514 (patch)
treee79f892e8545c72ddbe15d679315143e5672175d
parentdeae12c6b683898f5213992d561a59d4ea889cca (diff)
downloadxorg-lib-libX11-917de4a98eeb9a7eafeab7ddd8e1b1ae6aae6514.tar.gz
XFree86 4.3.0.1PRE_xf86-4_3_0_1
-rw-r--r--include/X11/XKBlib.h9
-rw-r--r--include/X11/Xcms.h16
-rw-r--r--include/X11/Xlib.h249
-rw-r--r--include/X11/Xlibint.h346
-rw-r--r--include/X11/Xlocale.h11
-rw-r--r--include/X11/Xresource.h13
-rw-r--r--include/X11/Xutil.h90
-rw-r--r--man/AllPlanes.man4
-rw-r--r--man/BlackPixelOfScreen.man4
-rw-r--r--man/DisplayOfCCC.man4
-rw-r--r--man/ImageByteOrder.man4
-rw-r--r--man/IsCursorKey.man4
-rw-r--r--man/XAddConnectionWatch.man21
-rw-r--r--man/XAddHost.man4
-rw-r--r--man/XAllocClassHint.man4
-rw-r--r--man/XAllocColor.man8
-rw-r--r--man/XAllocIconSize.man4
-rw-r--r--man/XAllocSizeHints.man30
-rw-r--r--man/XAllocStandardColormap.man10
-rw-r--r--man/XAllocWMHints.man28
-rw-r--r--man/XAllowEvents.man4
-rw-r--r--man/XAnyEvent.man4
-rw-r--r--man/XButtonEvent.man4
-rw-r--r--man/XChangeKeyboardControl.man20
-rw-r--r--man/XChangeKeyboardMapping.man10
-rw-r--r--man/XChangePointerControl.man4
-rw-r--r--man/XChangeSaveSet.man4
-rw-r--r--man/XChangeWindowAttributes.man4
-rw-r--r--man/XCirculateEvent.man4
-rw-r--r--man/XCirculateRequestEvent.man4
-rw-r--r--man/XClearArea.man6
-rw-r--r--man/XClientMessageEvent.man4
-rw-r--r--man/XColormapEvent.man4
-rw-r--r--man/XConfigureEvent.man4
-rw-r--r--man/XConfigureRequestEvent.man4
-rw-r--r--man/XConfigureWindow.man22
-rw-r--r--man/XCopyArea.man8
-rw-r--r--man/XCreateColormap.man6
-rw-r--r--man/XCreateFontCursor.man6
-rw-r--r--man/XCreateFontSet.man4
-rw-r--r--man/XCreateGC.man121
-rw-r--r--man/XCreateIC.man4
-rw-r--r--man/XCreateOC.man4
-rw-r--r--man/XCreatePixmap.man4
-rw-r--r--man/XCreateRegion.man4
-rw-r--r--man/XCreateWindow.man38
-rw-r--r--man/XCreateWindowEvent.man4
-rw-r--r--man/XCrossingEvent.man4
-rw-r--r--man/XDefineCursor.man4
-rw-r--r--man/XDestroyWindow.man4
-rw-r--r--man/XDestroyWindowEvent.man4
-rw-r--r--man/XDrawArc.man6
-rw-r--r--man/XDrawImageString.man6
-rw-r--r--man/XDrawLine.man4
-rw-r--r--man/XDrawPoint.man4
-rw-r--r--man/XDrawRectangle.man4
-rw-r--r--man/XDrawString.man6
-rw-r--r--man/XDrawText.man6
-rw-r--r--man/XEmptyRegion.man6
-rw-r--r--man/XErrorEvent.man4
-rw-r--r--man/XExposeEvent.man4
-rw-r--r--man/XExtentsOfFontSet.man4
-rw-r--r--man/XFillRectangle.man8
-rw-r--r--man/XFilterEvent.man4
-rw-r--r--man/XFlush.man4
-rw-r--r--man/XFocusChangeEvent.man4
-rw-r--r--man/XFontSetExtents.man4
-rw-r--r--man/XFontsOfFontSet.man4
-rw-r--r--man/XFree.man4
-rw-r--r--man/XGetVisualInfo.man26
-rw-r--r--man/XGetWindowAttributes.man4
-rw-r--r--man/XGetWindowProperty.man4
-rw-r--r--man/XGrabButton.man4
-rw-r--r--man/XGrabKey.man4
-rw-r--r--man/XGrabKeyboard.man4
-rw-r--r--man/XGrabPointer.man4
-rw-r--r--man/XGrabServer.man4
-rw-r--r--man/XGraphicsExposeEvent.man4
-rw-r--r--man/XGravityEvent.man4
-rw-r--r--man/XIconifyWindow.man6
-rw-r--r--man/XIfEvent.man4
-rw-r--r--man/XInitImage.man4
-rw-r--r--man/XInitThreads.man4
-rw-r--r--man/XInstallColormap.man6
-rw-r--r--man/XInternAtom.man4
-rw-r--r--man/XIntersectRegion.man6
-rw-r--r--man/XKeymapEvent.man4
-rw-r--r--man/XListFonts.man4
-rw-r--r--man/XLoadFont.man4
-rw-r--r--man/XLookupKeysym.man8
-rw-r--r--man/XMapEvent.man4
-rw-r--r--man/XMapRequestEvent.man4
-rw-r--r--man/XMapWindow.man4
-rw-r--r--man/XNextEvent.man4
-rw-r--r--man/XNoOp.man4
-rw-r--r--man/XOpenDisplay.man4
-rw-r--r--man/XOpenIM.man4
-rw-r--r--man/XOpenOM.man13
-rw-r--r--man/XParseGeometry.man6
-rw-r--r--man/XPolygonRegion.man4
-rw-r--r--man/XPropertyEvent.man4
-rw-r--r--man/XPutBackEvent.man4
-rw-r--r--man/XPutImage.man14
-rw-r--r--man/XQueryBestSize.man4
-rw-r--r--man/XQueryColor.man14
-rw-r--r--man/XQueryPointer.man4
-rw-r--r--man/XQueryTree.man6
-rw-r--r--man/XRaiseWindow.man4
-rw-r--r--man/XReadBitmapFile.man6
-rw-r--r--man/XRecolorCursor.man4
-rw-r--r--man/XReparentEvent.man4
-rw-r--r--man/XReparentWindow.man4
-rw-r--r--man/XResizeRequestEvent.man4
-rw-r--r--man/XResourceManagerString.man4
-rw-r--r--man/XSaveContext.man4
-rw-r--r--man/XSelectInput.man4
-rw-r--r--man/XSelectionClearEvent.man4
-rw-r--r--man/XSelectionEvent.man4
-rw-r--r--man/XSelectionRequestEvent.man4
-rw-r--r--man/XSendEvent.man8
-rw-r--r--man/XSetArcMode.man4
-rw-r--r--man/XSetClipOrigin.man4
-rw-r--r--man/XSetCloseDownMode.man4
-rw-r--r--man/XSetCommand.man6
-rw-r--r--man/XSetErrorHandler.man4
-rw-r--r--man/XSetFillStyle.man4
-rw-r--r--man/XSetFont.man4
-rw-r--r--man/XSetFontPath.man4
-rw-r--r--man/XSetICFocus.man4
-rw-r--r--man/XSetICValues.man4
-rw-r--r--man/XSetInputFocus.man4
-rw-r--r--man/XSetLineAttributes.man4
-rw-r--r--man/XSetPointerMapping.man4
-rw-r--r--man/XSetScreenSaver.man4
-rw-r--r--man/XSetSelectionOwner.man4
-rw-r--r--man/XSetState.man6
-rw-r--r--man/XSetTextProperty.man8
-rw-r--r--man/XSetTile.man4
-rw-r--r--man/XSetTransientForHint.man4
-rw-r--r--man/XSetWMClientMachine.man4
-rw-r--r--man/XSetWMColormapWindows.man8
-rw-r--r--man/XSetWMIconName.man4
-rw-r--r--man/XSetWMName.man4
-rw-r--r--man/XSetWMProperties.man85
-rw-r--r--man/XSetWMProtocols.man8
-rw-r--r--man/XStoreBytes.man6
-rw-r--r--man/XStoreColors.man4
-rw-r--r--man/XStringListToTextProperty.man12
-rw-r--r--man/XStringToKeysym.man4
-rw-r--r--man/XSupportsLocale.man4
-rw-r--r--man/XSynchronize.man4
-rw-r--r--man/XTextExtents.man12
-rw-r--r--man/XTextWidth.man4
-rw-r--r--man/XTranslateCoordinates.man4
-rw-r--r--man/XUnmapEvent.man4
-rw-r--r--man/XUnmapWindow.man4
-rw-r--r--man/XVaCreateNestedList.man4
-rw-r--r--man/XVisibilityEvent.man8
-rw-r--r--man/XWarpPointer.man4
-rw-r--r--man/XcmsAllocColor.man9
-rw-r--r--man/XcmsCCCOfColormap.man4
-rw-r--r--man/XcmsCIELabQueryMaxC.man10
-rw-r--r--man/XcmsCIELuvQueryMaxC.man10
-rw-r--r--man/XcmsColor.man5
-rw-r--r--man/XcmsConvertColors.man4
-rw-r--r--man/XcmsCreateCCC.man4
-rw-r--r--man/XcmsDefaultCCC.man4
-rw-r--r--man/XcmsQueryBlack.man4
-rw-r--r--man/XcmsQueryColor.man7
-rw-r--r--man/XcmsSetWhitePoint.man4
-rw-r--r--man/XcmsStoreColor.man4
-rw-r--r--man/XcmsTekHVCQueryMaxC.man18
-rw-r--r--man/XmbDrawImageString.man39
-rw-r--r--man/XmbDrawString.man36
-rw-r--r--man/XmbDrawText.man49
-rw-r--r--man/XmbLookupString.man70
-rw-r--r--man/XmbResetIC.man33
-rw-r--r--man/XmbTextEscapement.man26
-rw-r--r--man/XmbTextExtents.man35
-rw-r--r--man/XmbTextListToTextProperty.man111
-rw-r--r--man/XmbTextPerCharExtents.man50
-rw-r--r--man/XrmEnumerateDatabase.man8
-rw-r--r--man/XrmGetFileDatabase.man4
-rw-r--r--man/XrmGetResource.man12
-rw-r--r--man/XrmInitialize.man6
-rw-r--r--man/XrmMergeDatabases.man4
-rw-r--r--man/XrmPutResource.man8
-rw-r--r--man/XrmUniqueQuark.man28
-rw-r--r--modules/im/ximcp/imCallbk.c48
-rw-r--r--modules/im/ximcp/imDefFlt.c1
-rw-r--r--modules/im/ximcp/imDefIc.c292
-rw-r--r--modules/im/ximcp/imDefIm.c87
-rw-r--r--modules/im/ximcp/imDefLkup.c135
-rw-r--r--modules/im/ximcp/imDispch.c5
-rw-r--r--modules/im/ximcp/imExten.c11
-rw-r--r--modules/im/ximcp/imImSw.c9
-rw-r--r--modules/im/ximcp/imInsClbk.c49
-rw-r--r--modules/im/ximcp/imInt.c33
-rw-r--r--modules/im/ximcp/imLcIc.c28
-rw-r--r--modules/im/ximcp/imLcIm.c107
-rw-r--r--modules/im/ximcp/imLcLkup.c118
-rw-r--r--modules/im/ximcp/imLcPrs.c35
-rw-r--r--modules/im/ximcp/imRm.c5
-rw-r--r--modules/im/ximcp/imRmAttr.c5
-rw-r--r--modules/im/ximcp/imThaiFlt.c347
-rw-r--r--modules/im/ximcp/imThaiIc.c33
-rw-r--r--modules/im/ximcp/imThaiIm.c106
-rw-r--r--modules/im/ximcp/imTrX.c12
-rw-r--r--modules/im/ximcp/imTransR.c15
-rw-r--r--modules/lc/Utf8/lcUTF8Load.c61
-rw-r--r--modules/lc/def/lcDefConv.c810
-rw-r--r--modules/lc/gen/lcGenConv.c1738
-rw-r--r--modules/lc/xlocale/lcEuc.c457
-rw-r--r--modules/lc/xlocale/lcJis.c375
-rw-r--r--modules/lc/xlocale/lcSjis.c475
-rw-r--r--modules/om/generic/omDefault.c255
-rw-r--r--modules/om/generic/omGeneric.c430
-rw-r--r--modules/om/generic/omImText.c24
-rw-r--r--modules/om/generic/omText.c43
-rw-r--r--modules/om/generic/omTextEsc.c47
-rw-r--r--modules/om/generic/omTextExt.c22
-rw-r--r--modules/om/generic/omTextPer.c35
-rw-r--r--modules/om/generic/omXChar.c51
-rw-r--r--nls/C/XI18N_OBJS7
-rw-r--r--nls/C/XLC_LOCALE.pre13
-rw-r--r--nls/armscii-8/Compose.pre15
-rw-r--r--nls/armscii-8/XI18N_OBJS7
-rw-r--r--nls/armscii-8/XLC_LOCALE.pre80
-rw-r--r--nls/compose.dir.pre433
-rw-r--r--nls/el_GR.UTF-8/Compose.pre1575
-rw-r--r--nls/en_US.UTF-8/Compose.pre7728
-rw-r--r--nls/en_US.UTF-8/XI18N_OBJS9
-rw-r--r--nls/en_US.UTF-8/XLC_LOCALE.pre393
-rw-r--r--nls/georgian-academy/Compose.pre15
-rw-r--r--nls/georgian-academy/XI18N_OBJS7
-rw-r--r--nls/georgian-academy/XLC_LOCALE.pre80
-rw-r--r--nls/georgian-ps/Compose.pre15
-rw-r--r--nls/georgian-ps/XI18N_OBJS7
-rw-r--r--nls/georgian-ps/XLC_LOCALE.pre80
-rw-r--r--nls/ibm-cp1133/Compose.pre15
-rw-r--r--nls/ibm-cp1133/XI18N_OBJS7
-rw-r--r--nls/ibm-cp1133/XLC_LOCALE.pre80
-rw-r--r--nls/iscii-dev/XI18N_OBJS7
-rw-r--r--nls/iscii-dev/XLC_LOCALE.pre80
-rw-r--r--nls/isiri-3342/XI18N_OBJS7
-rw-r--r--nls/isiri-3342/XLC_LOCALE.pre80
-rw-r--r--nls/iso8859-1/Compose.pre87
-rw-r--r--nls/iso8859-1/XI18N_OBJS7
-rw-r--r--nls/iso8859-10/Compose.pre15
-rw-r--r--nls/iso8859-10/XI18N_OBJS7
-rw-r--r--nls/iso8859-11/XI18N_OBJS9
-rw-r--r--nls/iso8859-11/XLC_LOCALE.pre74
-rw-r--r--nls/iso8859-13/Compose.pre433
-rw-r--r--nls/iso8859-13/XI18N_OBJS7
-rw-r--r--nls/iso8859-13/XLC_LOCALE.pre74
-rw-r--r--nls/iso8859-14/Compose.pre508
-rw-r--r--nls/iso8859-14/XI18N_OBJS7
-rw-r--r--nls/iso8859-14/XLC_LOCALE.pre74
-rw-r--r--nls/iso8859-15/Compose.pre470
-rw-r--r--nls/iso8859-15/XI18N_OBJS7
-rw-r--r--nls/iso8859-15/XLC_LOCALE.pre80
-rw-r--r--nls/iso8859-2/Compose.pre154
-rw-r--r--nls/iso8859-2/XI18N_OBJS7
-rw-r--r--nls/iso8859-3/Compose.pre479
-rw-r--r--nls/iso8859-3/XI18N_OBJS7
-rw-r--r--nls/iso8859-4/Compose.pre356
-rw-r--r--nls/iso8859-4/XI18N_OBJS7
-rw-r--r--nls/iso8859-5/Compose.pre15
-rw-r--r--nls/iso8859-5/XI18N_OBJS7
-rw-r--r--nls/iso8859-6/Compose.pre15
-rw-r--r--nls/iso8859-6/XI18N_OBJS7
-rw-r--r--nls/iso8859-7/Compose.pre231
-rw-r--r--nls/iso8859-7/XI18N_OBJS7
-rw-r--r--nls/iso8859-8/Compose.pre15
-rw-r--r--nls/iso8859-8/XI18N_OBJS7
-rw-r--r--nls/iso8859-9/Compose.pre478
-rw-r--r--nls/iso8859-9/XI18N_OBJS7
-rw-r--r--nls/iso8859-9e/Compose.pre489
-rw-r--r--nls/iso8859-9e/XI18N_OBJS7
-rw-r--r--nls/iso8859-9e/XLC_LOCALE.pre86
-rw-r--r--nls/ja.JIS/Compose.pre15
-rw-r--r--nls/ja.JIS/XI18N_OBJS7
-rw-r--r--nls/ja.JIS/XLC_LOCALE.pre6
-rw-r--r--nls/ja.S90/XI18N_OBJS7
-rw-r--r--nls/ja.SJIS/Compose.pre15
-rw-r--r--nls/ja.SJIS/XI18N_OBJS10
-rw-r--r--nls/ja.SJIS/XLC_LOCALE.pre6
-rw-r--r--nls/ja.U90/XI18N_OBJS7
-rw-r--r--nls/ja/Compose.pre15
-rw-r--r--nls/ja/XI18N_OBJS9
-rw-r--r--nls/ja/XLC_LOCALE.pre6
-rw-r--r--nls/ja_JP.UTF-8/XI18N_OBJS9
-rw-r--r--nls/ja_JP.UTF-8/XLC_LOCALE.pre150
-rw-r--r--nls/ko/Compose.pre15
-rw-r--r--nls/ko/XI18N_OBJS5
-rw-r--r--nls/ko/XLC_LOCALE.pre4
-rw-r--r--nls/ko_KR.UTF-8/XI18N_OBJS9
-rw-r--r--nls/ko_KR.UTF-8/XLC_LOCALE.pre148
-rw-r--r--nls/koi8-c/Compose.pre123
-rw-r--r--nls/koi8-c/XI18N_OBJS7
-rw-r--r--nls/koi8-c/XLC_LOCALE.pre80
-rw-r--r--nls/koi8-r/Compose.pre15
-rw-r--r--nls/koi8-r/XI18N_OBJS7
-rw-r--r--nls/koi8-r/XLC_LOCALE.pre28
-rw-r--r--nls/koi8-u/Compose.pre15
-rw-r--r--nls/koi8-u/XI18N_OBJS7
-rw-r--r--nls/koi8-u/XLC_LOCALE.pre80
-rw-r--r--nls/locale.alias.pre577
-rw-r--r--nls/locale.dir.pre491
-rw-r--r--nls/microsoft-cp1251/XI18N_OBJS7
-rw-r--r--nls/microsoft-cp1251/XLC_LOCALE.pre87
-rw-r--r--nls/microsoft-cp1255/XI18N_OBJS7
-rw-r--r--nls/microsoft-cp1255/XLC_LOCALE.pre87
-rw-r--r--nls/microsoft-cp1256/XI18N_OBJS7
-rw-r--r--nls/microsoft-cp1256/XLC_LOCALE.pre87
-rw-r--r--nls/mulelao-1/Compose.pre15
-rw-r--r--nls/mulelao-1/XI18N_OBJS7
-rw-r--r--nls/mulelao-1/XLC_LOCALE.pre80
-rw-r--r--nls/nokhchi-1/XI18N_OBJS7
-rw-r--r--nls/nokhchi-1/XLC_LOCALE.pre80
-rw-r--r--nls/tatar-cyr/XI18N_OBJS7
-rw-r--r--nls/tatar-cyr/XLC_LOCALE.pre87
-rw-r--r--nls/th_TH.UTF-8/XI18N_OBJS9
-rw-r--r--nls/th_TH.UTF-8/XLC_LOCALE.pre75
-rw-r--r--nls/th_TH/XI18N_OBJS7
-rw-r--r--nls/th_TH/XLC_LOCALE.pre67
-rw-r--r--nls/tscii-0/XI18N_OBJS7
-rw-r--r--nls/tscii-0/XLC_LOCALE.pre80
-rw-r--r--nls/vi_VN.tcvn/Compose.pre139
-rw-r--r--nls/vi_VN.tcvn/XI18N_OBJS7
-rw-r--r--nls/vi_VN.tcvn/XLC_LOCALE.pre80
-rw-r--r--nls/vi_VN.viscii/Compose.pre139
-rw-r--r--nls/vi_VN.viscii/XI18N_OBJS7
-rw-r--r--nls/vi_VN.viscii/XLC_LOCALE.pre80
-rw-r--r--nls/zh_CN.gbk/Compose.pre15
-rw-r--r--nls/zh_CN.gbk/XI18N_OBJS7
-rw-r--r--nls/zh_CN.gbk/XLC_LOCALE.pre71
-rw-r--r--nls/zh_CN/XI18N_OBJS10
-rw-r--r--nls/zh_CN/XLC_LOCALE.pre64
-rw-r--r--nls/zh_HK.big5/XLC_LOCALE.pre70
-rw-r--r--nls/zh_HK.big5hkscs/XI18N_OBJS7
-rw-r--r--nls/zh_HK.big5hkscs/XLC_LOCALE.pre151
-rw-r--r--nls/zh_TW.UTF-8/XI18N_OBJS7
-rw-r--r--nls/zh_TW.UTF-8/XLC_LOCALE.pre165
-rw-r--r--nls/zh_TW.big5/Compose.pre15
-rw-r--r--nls/zh_TW.big5/XI18N_OBJS7
-rw-r--r--nls/zh_TW.big5/XLC_LOCALE.pre94
-rw-r--r--nls/zh_TW/Compose.pre15
-rw-r--r--nls/zh_TW/XI18N_OBJS5
-rw-r--r--src/AllPlanes.c3
-rw-r--r--src/AllowEv.c2
-rw-r--r--src/AutoRep.c3
-rw-r--r--src/Backgnd.c2
-rw-r--r--src/BdrWidth.c2
-rw-r--r--src/Bell.c2
-rw-r--r--src/Border.c2
-rw-r--r--src/ChAccCon.c4
-rw-r--r--src/ChActPGb.c2
-rw-r--r--src/ChClMode.c2
-rw-r--r--src/ChCmap.c2
-rw-r--r--src/ChGC.c6
-rw-r--r--src/ChKeyCon.c2
-rw-r--r--src/ChPntCon.c2
-rw-r--r--src/ChProp.c2
-rw-r--r--src/ChSaveSet.c4
-rw-r--r--src/ChWAttrs.c5
-rw-r--r--src/ChWindow.c2
-rw-r--r--src/ChkMaskEv.c10
-rw-r--r--src/ChkTypEv.c3
-rw-r--r--src/ChkTypWEv.c3
-rw-r--r--src/ChkWinEv.c10
-rw-r--r--src/CirWin.c2
-rw-r--r--src/CirWinDn.c2
-rw-r--r--src/CirWinUp.c2
-rw-r--r--src/ClDisplay.c5
-rw-r--r--src/Clear.c2
-rw-r--r--src/ClearArea.c2
-rw-r--r--src/ConfWind.c2
-rw-r--r--src/ConnDis.c53
-rw-r--r--src/Context.c7
-rw-r--r--src/ConvSel.c2
-rw-r--r--src/CopyArea.c2
-rw-r--r--src/CopyCmap.c7
-rw-r--r--src/CopyGC.c2
-rw-r--r--src/CopyPlane.c2
-rw-r--r--src/CrCmap.c6
-rw-r--r--src/CrCursor.c18
-rw-r--r--src/CrGC.c11
-rw-r--r--src/CrGlCur.c193
-rw-r--r--src/CrPixmap.c13
-rw-r--r--src/Cursor.c5
-rw-r--r--src/DefCursor.c2
-rw-r--r--src/DelProp.c2
-rw-r--r--src/DestSubs.c2
-rw-r--r--src/DestWind.c2
-rw-r--r--src/DrArc.c2
-rw-r--r--src/DrArcs.c2
-rw-r--r--src/DrLine.c2
-rw-r--r--src/DrLines.c2
-rw-r--r--src/DrPoint.c2
-rw-r--r--src/DrPoints.c2
-rw-r--r--src/DrRect.c2
-rw-r--r--src/DrRects.c2
-rw-r--r--src/DrSegs.c2
-rw-r--r--src/ErrDes.c11
-rw-r--r--src/ErrHndlr.c2
-rw-r--r--src/EvToWire.c9
-rw-r--r--src/FSSaver.c4
-rw-r--r--src/FSWrap.c2
-rw-r--r--src/FillArc.c2
-rw-r--r--src/FillArcs.c2
-rw-r--r--src/FillPoly.c2
-rw-r--r--src/FillRct.c2
-rw-r--r--src/FillRcts.c2
-rw-r--r--src/FilterEv.c8
-rw-r--r--src/Flush.c2
-rw-r--r--src/Font.c554
-rw-r--r--src/FontInfo.c22
-rw-r--r--src/FontNames.c3
-rw-r--r--src/FreeCmap.c2
-rw-r--r--src/FreeCols.c2
-rw-r--r--src/FreeCurs.c2
-rw-r--r--src/FreeEData.c2
-rw-r--r--src/FreeGC.c2
-rw-r--r--src/FreePix.c2
-rw-r--r--src/GCMisc.c6
-rw-r--r--src/GetAtomNm.c37
-rw-r--r--src/GetColor.c32
-rw-r--r--src/GetDflt.c22
-rw-r--r--src/GetFPath.c2
-rw-r--r--src/GetHints.c1
-rw-r--r--src/GetIFocus.c2
-rw-r--r--src/GetImage.c5
-rw-r--r--src/GetKCnt.c2
-rw-r--r--src/GetPCnt.c2
-rw-r--r--src/GetPntMap.c5
-rw-r--r--src/GetProp.c12
-rw-r--r--src/GetSSaver.c2
-rw-r--r--src/GrButton.c2
-rw-r--r--src/GrKey.c2
-rw-r--r--src/GrServer.c2
-rw-r--r--src/Host.c6
-rw-r--r--src/IfEvent.c2
-rw-r--r--src/ImText.c2
-rw-r--r--src/ImText16.c2
-rw-r--r--src/ImUtil.c37
-rw-r--r--src/InitExt.c133
-rw-r--r--src/InsCmap.c2
-rw-r--r--src/IntAtom.c55
-rw-r--r--src/KeyBind.c15
-rw-r--r--src/KeysymStr.c38
-rw-r--r--src/KillCl.c2
-rw-r--r--src/LiICmaps.c3
-rw-r--r--src/LiProps.c3
-rw-r--r--src/ListExt.c2
-rw-r--r--src/LoadFont.c5
-rw-r--r--src/LookupCol.c25
-rw-r--r--src/LowerWin.c2
-rw-r--r--src/Macros.c3
-rw-r--r--src/MapRaised.c2
-rw-r--r--src/MapSubs.c2
-rw-r--r--src/MapWindow.c2
-rw-r--r--src/MaskEvent.c12
-rw-r--r--src/Misc.c2
-rw-r--r--src/ModMap.c2
-rw-r--r--src/MoveWin.c2
-rw-r--r--src/NextEvent.c2
-rw-r--r--src/OCWrap.c34
-rw-r--r--src/OMWrap.c23
-rw-r--r--src/OpenDis.c55
-rw-r--r--src/ParseCmd.c9
-rw-r--r--src/ParseCol.c22
-rw-r--r--src/ParseGeom.c9
-rw-r--r--src/PeekEvent.c2
-rw-r--r--src/PeekIfEv.c2
-rw-r--r--src/PmapBgnd.c2
-rw-r--r--src/PmapBord.c2
-rw-r--r--src/PolyReg.c3
-rw-r--r--src/PolyTxt.c4
-rw-r--r--src/PolyTxt16.c4
-rw-r--r--src/PropAlloc.c3
-rw-r--r--src/PutBEvent.c2
-rw-r--r--src/PutImage.c54
-rw-r--r--src/QuColor.c2
-rw-r--r--src/QuColors.c2
-rw-r--r--src/QuKeybd.c2
-rw-r--r--src/QuTextE16.c2
-rw-r--r--src/QuTextExt.c2
-rw-r--r--src/QuTree.c3
-rw-r--r--src/Quarks.c14
-rw-r--r--src/RaiseWin.c2
-rw-r--r--src/RdBitF.c7
-rw-r--r--src/RecolorC.c2
-rw-r--r--src/ReconfWin.c2
-rw-r--r--src/Region.c28
-rw-r--r--src/RegstFlt.c1
-rw-r--r--src/RepWindow.c2
-rw-r--r--src/RestackWs.c2
-rw-r--r--src/RotProp.c2
-rw-r--r--src/SelInput.c2
-rw-r--r--src/SendEvent.c2
-rw-r--r--src/SetBack.c2
-rw-r--r--src/SetCRects.c2
-rw-r--r--src/SetClMask.c2
-rw-r--r--src/SetClOrig.c2
-rw-r--r--src/SetDashes.c2
-rw-r--r--src/SetFPath.c1
-rw-r--r--src/SetFont.c2
-rw-r--r--src/SetFore.c2
-rw-r--r--src/SetFunc.c2
-rw-r--r--src/SetHints.c10
-rw-r--r--src/SetIFocus.c2
-rw-r--r--src/SetLStyle.c2
-rw-r--r--src/SetLocale.c136
-rw-r--r--src/SetPMask.c2
-rw-r--r--src/SetPntMap.c2
-rw-r--r--src/SetSOwner.c2
-rw-r--r--src/SetSSaver.c2
-rw-r--r--src/SetState.c2
-rw-r--r--src/SetStip.c2
-rw-r--r--src/SetTSOrig.c2
-rw-r--r--src/SetTile.c2
-rw-r--r--src/StBytes.c4
-rw-r--r--src/StColor.c2
-rw-r--r--src/StColors.c2
-rw-r--r--src/StNColor.c5
-rw-r--r--src/StName.c3
-rw-r--r--src/StrKeysym.c34
-rw-r--r--src/Sync.c2
-rw-r--r--src/Text.c2
-rw-r--r--src/Text16.c6
-rw-r--r--src/TextExt.c2
-rw-r--r--src/TextExt16.c2
-rw-r--r--src/TextToStr.c3
-rw-r--r--src/UIThrStubs.c157
-rw-r--r--src/UndefCurs.c2
-rw-r--r--src/UngrabBut.c2
-rw-r--r--src/UngrabKbd.c2
-rw-r--r--src/UngrabKey.c2
-rw-r--r--src/UngrabPtr.c2
-rw-r--r--src/UngrabSvr.c2
-rw-r--r--src/UninsCmap.c2
-rw-r--r--src/UnldFont.c4
-rw-r--r--src/UnmapSubs.c2
-rw-r--r--src/UnmapWin.c2
-rw-r--r--src/WMProps.c20
-rw-r--r--src/WarpPtr.c2
-rw-r--r--src/WinEvent.c12
-rw-r--r--src/Window.c3
-rw-r--r--src/WrBitF.c4
-rw-r--r--src/XErrorDB156
-rw-r--r--src/XKeysymDB148
-rw-r--r--src/Xintatom.h33
-rw-r--r--src/Xintconn.h27
-rw-r--r--src/XlibInt.c162
-rw-r--r--src/XomGeneric.h5
-rw-r--r--src/Xrm.c95
-rw-r--r--src/evtomask.c9
-rw-r--r--src/globals.c4
-rw-r--r--src/imConv.c944
-rw-r--r--src/locking.c5
-rw-r--r--src/locking.h5
-rw-r--r--src/os2Stubs.c426
-rw-r--r--src/udcInf.c16
-rw-r--r--src/util/makekeys.c17
-rw-r--r--src/xcms/CCC.c7
-rw-r--r--src/xcms/CvColW.c7
-rw-r--r--src/xcms/CvCols.c2
-rw-r--r--src/xcms/HVC.c9
-rw-r--r--src/xcms/HVCGcC.c3
-rw-r--r--src/xcms/HVCGcV.c9
-rw-r--r--src/xcms/HVCGcVC.c7
-rw-r--r--src/xcms/HVCMxC.c4
-rw-r--r--src/xcms/HVCMxV.c4
-rw-r--r--src/xcms/HVCMxVs.c3
-rw-r--r--src/xcms/LRGB.c341
-rw-r--r--src/xcms/Lab.c7
-rw-r--r--src/xcms/LabGcC.c3
-rw-r--r--src/xcms/LabGcL.c4
-rw-r--r--src/xcms/LabGcLC.c7
-rw-r--r--src/xcms/LabMnL.c4
-rw-r--r--src/xcms/LabMxC.c4
-rw-r--r--src/xcms/LabMxL.c4
-rw-r--r--src/xcms/Luv.c9
-rw-r--r--src/xcms/LuvGcC.c6
-rw-r--r--src/xcms/LuvGcL.c4
-rw-r--r--src/xcms/LuvGcLC.c7
-rw-r--r--src/xcms/LuvMnL.c4
-rw-r--r--src/xcms/LuvMxC.c4
-rw-r--r--src/xcms/LuvMxL.c4
-rw-r--r--src/xcms/QuCol.c5
-rw-r--r--src/xcms/QuCols.c6
-rw-r--r--src/xcms/StCol.c6
-rw-r--r--src/xcms/StCols.c6
-rw-r--r--src/xcms/XRGB.c9
-rw-r--r--src/xcms/XYZ.c3
-rw-r--r--src/xcms/Xcms.txt24
-rw-r--r--src/xcms/Xcmsint.h12
-rw-r--r--src/xcms/cmsAllCol.c6
-rw-r--r--src/xcms/cmsAllNCol.c4
-rw-r--r--src/xcms/cmsColNm.c51
-rw-r--r--src/xcms/cmsGlobls.c35
-rw-r--r--src/xcms/cmsInt.c4
-rw-r--r--src/xcms/cmsLkCol.c8
-rw-r--r--src/xcms/cmsMath.c3
-rw-r--r--src/xcms/cmsTrig.c26
-rw-r--r--src/xcms/uvY.c9
-rw-r--r--src/xcms/xyY.c7
-rw-r--r--src/xkb/XKB.c21
-rw-r--r--src/xkb/XKBAlloc.c1
-rw-r--r--src/xkb/XKBBind.c107
-rw-r--r--src/xkb/XKBCtrls.c11
-rw-r--r--src/xkb/XKBCvt.c327
-rw-r--r--src/xkb/XKBExtDev.c13
-rw-r--r--src/xkb/XKBGAlloc.c1
-rw-r--r--src/xkb/XKBGeom.c3
-rw-r--r--src/xkb/XKBGetMap.c9
-rw-r--r--src/xkb/XKBMAlloc.c1
-rw-r--r--src/xkb/XKBMisc.c18
-rw-r--r--src/xkb/XKBNames.c11
-rw-r--r--src/xkb/XKBRdBuf.c3
-rw-r--r--src/xkb/XKBSetMap.c1
-rw-r--r--src/xkb/XKBUse.c151
-rw-r--r--src/xkb/XKBleds.c4
-rw-r--r--src/xkb/XKBlibint.h1
-rw-r--r--src/xlibi18n/ICWrap.c123
-rw-r--r--src/xlibi18n/IMWrap.c34
-rw-r--r--src/xlibi18n/XDefaultIMIF.c12
-rw-r--r--src/xlibi18n/XDefaultOMIF.c25
-rw-r--r--src/xlibi18n/XimThai.h5
-rw-r--r--src/xlibi18n/Ximint.h134
-rw-r--r--src/xlibi18n/XimintL.h18
-rw-r--r--src/xlibi18n/XimintP.h14
-rw-r--r--src/xlibi18n/XlcDL.c393
-rw-r--r--src/xlibi18n/XlcGeneric.h4
-rw-r--r--src/xlibi18n/XlcPubI.h149
-rw-r--r--src/xlibi18n/XlcPublic.h262
-rw-r--r--src/xlibi18n/Xlcint.h348
-rw-r--r--src/xlibi18n/imKStoUCS.c324
-rw-r--r--src/xlibi18n/lcCT.c1581
-rw-r--r--src/xlibi18n/lcCharSet.c169
-rw-r--r--src/xlibi18n/lcConv.c148
-rw-r--r--src/xlibi18n/lcDB.c603
-rw-r--r--src/xlibi18n/lcDynamic.c31
-rw-r--r--src/xlibi18n/lcFile.c358
-rw-r--r--src/xlibi18n/lcGeneric.c562
-rw-r--r--src/xlibi18n/lcInit.c129
-rw-r--r--src/xlibi18n/lcPrTxt.c131
-rw-r--r--src/xlibi18n/lcPubWrap.c22
-rw-r--r--src/xlibi18n/lcPublic.c91
-rw-r--r--src/xlibi18n/lcRM.c219
-rw-r--r--src/xlibi18n/lcStd.c60
-rw-r--r--src/xlibi18n/lcTxtPr.c84
-rw-r--r--src/xlibi18n/lcUTF8.c1844
-rw-r--r--src/xlibi18n/lcUniConv/8bit_tab_to_h.c536
-rw-r--r--src/xlibi18n/lcUniConv/COPYRIGHT39
-rw-r--r--src/xlibi18n/lcUniConv/README10
-rw-r--r--src/xlibi18n/lcUniConv/armscii_8.h94
-rw-r--r--src/xlibi18n/lcUniConv/ascii.h26
-rw-r--r--src/xlibi18n/lcUniConv/big5.h4142
-rw-r--r--src/xlibi18n/lcUniConv/big5_emacs.h164
-rw-r--r--src/xlibi18n/lcUniConv/cjk_tab_to_h.c1025
-rw-r--r--src/xlibi18n/lcUniConv/cp1133.h92
-rw-r--r--src/xlibi18n/lcUniConv/cp1251.h113
-rw-r--r--src/xlibi18n/lcUniConv/cp1255.h121
-rw-r--r--src/xlibi18n/lcUniConv/cp1256.h135
-rw-r--r--src/xlibi18n/lcUniConv/gb2312.h2553
-rw-r--r--src/xlibi18n/lcUniConv/georgian_academy.h88
-rw-r--r--src/xlibi18n/lcUniConv/georgian_ps.h105
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_1.h23
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_10.h88
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_11.h78
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_13.h91
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_14.h109
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_15.h63
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_16.h98
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_2.h94
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_3.h100
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_4.h94
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_5.h77
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_6.h80
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_7.h88
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_8.h89
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_9.h67
-rw-r--r--src/xlibi18n/lcUniConv/iso8859_9e.h103
-rw-r--r--src/xlibi18n/lcUniConv/jisx0201.h48
-rw-r--r--src/xlibi18n/lcUniConv/jisx0208.h2397
-rw-r--r--src/xlibi18n/lcUniConv/jisx0212.h2164
-rw-r--r--src/xlibi18n/lcUniConv/koi8_c.h103
-rw-r--r--src/xlibi18n/lcUniConv/koi8_r.h135
-rw-r--r--src/xlibi18n/lcUniConv/koi8_u.h143
-rw-r--r--src/xlibi18n/lcUniConv/ksc5601.h3003
-rw-r--r--src/xlibi18n/lcUniConv/mulelao.h78
-rw-r--r--src/xlibi18n/lcUniConv/tatar_cyr.h123
-rw-r--r--src/xlibi18n/lcUniConv/tcvn.h134
-rw-r--r--src/xlibi18n/lcUniConv/tis620.h78
-rw-r--r--src/xlibi18n/lcUniConv/ucs2be.h32
-rw-r--r--src/xlibi18n/lcUniConv/utf8.h110
-rw-r--r--src/xlibi18n/lcUniConv/viscii.h123
-rw-r--r--src/xlibi18n/lcUtil.c81
-rw-r--r--src/xlibi18n/lcWrap.c270
-rw-r--r--src/xlibi18n/mbWMProps.c17
-rw-r--r--src/xlibi18n/mbWrap.c25
-rw-r--r--src/xlibi18n/utf8WMProps.c103
-rw-r--r--src/xlibi18n/utf8Wrap.c255
-rw-r--r--src/xlibi18n/wcWrap.c25
706 files changed, 50762 insertions, 10481 deletions
diff --git a/include/X11/XKBlib.h b/include/X11/XKBlib.h
index 0369c8c6..abeb92b7 100644
--- a/include/X11/XKBlib.h
+++ b/include/X11/XKBlib.h
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBlib.h,v 3.3 2001/08/01 00:44:38 tsi Exp $ */
#ifndef _XKBLIB_H_
#define _XKBLIB_H_
@@ -1346,6 +1347,14 @@ extern Bool XkbSetDebuggingFlags(
#endif
);
+extern Bool XkbApplyVirtualModChanges(
+#if NeedFunctionPrototypes
+ XkbDescPtr /* xkb */,
+ unsigned int /* changed */,
+ XkbChangesPtr /* changes */
+#endif
+);
+
_XFUNCPROTOEND
#endif /* _XKBLIB_H_ */
diff --git a/include/X11/Xcms.h b/include/X11/Xcms.h
index d9e9c3b4..4b71af45 100644
--- a/include/X11/Xcms.h
+++ b/include/X11/Xcms.h
@@ -27,6 +27,7 @@
* DESCRIPTION
* Public include file for X Color Management System
*/
+/* $XFree86: xc/lib/X11/Xcms.h,v 1.5 2001/01/17 19:41:49 dawes Exp $ */
#ifndef _XCMS_H_
#define _XCMS_H_
@@ -255,6 +256,21 @@ typedef void (*XcmsScreenFreeProc)(
* Function List Pointer -- pointer to an array of function pointers.
* The end of list is indicated by a NULL pointer.
*/
+/*
+ * XXX: The use of the XcmsConversionProc type is broken. The
+ * device-independent colour conversion code uses it as:
+
+typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *,
+ unsigned int);
+
+ * while the device-dependent code uses it as:
+
+typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int,
+ Bool *);
+
+ * Until this is reworked, it's probably best to leave it unprotoized.
+ * The code works regardless.
+ */
typedef Status (*XcmsConversionProc)();
typedef XcmsConversionProc *XcmsFuncListPtr;
diff --git a/include/X11/Xlib.h b/include/X11/Xlib.h
index 0cf9d86e..7bd488ca 100644
--- a/include/X11/Xlib.h
+++ b/include/X11/Xlib.h
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Xlib.h,v 3.23 2002/05/31 18:45:42 dawes Exp $ */
/*
@@ -59,16 +60,36 @@ in this Software without prior written authorization from The Open Group.
#ifndef X_WCHAR
#ifdef X_NOT_STDC_ENV
+#ifndef SCO324
+#ifndef ISC
#define X_WCHAR
#endif
#endif
+#endif
+#endif
#ifndef X_WCHAR
#include <stddef.h>
#else
+#ifdef __UNIXOS2__
+#include <stdlib.h>
+#else
/* replace this with #include or typedef appropriate for your system */
typedef unsigned long wchar_t;
#endif
+#endif
+
+#if defined(ISC) && defined(USE_XMBTOWC)
+#define wctomb(a,b) _Xwctomb(a,b)
+#define mblen(a,b) _Xmblen(a,b)
+#ifndef USE_XWCHAR_STRING
+#define mbtowc(a,b,c) _Xmbtowc(a,b,c)
+#endif
+#endif
+
+/* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
+ November 2000. Its presence is indicated through the following macro. */
+#define X_HAVE_UTF8_STRING 1
typedef char *XPointer;
@@ -145,7 +166,11 @@ typedef char *XPointer;
typedef struct _XExtData {
int number; /* number returned by XRegisterExtension */
struct _XExtData *next; /* next item on list of data for structure */
- int (*free_private)(); /* called to free private storage */
+ int (*free_private)( /* called to free private storage */
+#if NeedFunctionPrototypes
+ struct _XExtData *extension
+#endif
+ );
XPointer private_data; /* data private to this extension. */
} XExtData;
@@ -359,14 +384,25 @@ typedef struct _XImage {
unsigned long blue_mask;
XPointer obdata; /* hook for the object routines to hang on */
struct funcs { /* image manipulation routines */
- struct _XImage *(*create_image)();
#if NeedFunctionPrototypes
+ struct _XImage *(*create_image)(
+ struct _XDisplay* /* display */,
+ Visual* /* visual */,
+ unsigned int /* depth */,
+ int /* format */,
+ int /* offset */,
+ char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* bitmap_pad */,
+ int /* bytes_per_line */);
int (*destroy_image) (struct _XImage *);
unsigned long (*get_pixel) (struct _XImage *, int, int);
int (*put_pixel) (struct _XImage *, int, int, unsigned long);
struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
int (*add_pixel) (struct _XImage *, long);
#else
+ struct _XImage *(*create_image)();
int (*destroy_image)();
unsigned long (*get_pixel)();
int (*put_pixel)();
@@ -489,7 +525,11 @@ _XDisplay
XID private4;
XID private5;
int private6;
- XID (*resource_alloc)();/* allocator function */
+ XID (*resource_alloc)( /* allocator function */
+#if NeedFunctionPrototypes
+ struct _XDisplay*
+#endif
+ );
int byte_order; /* screen byte order, LSBFirst, MSBFirst */
int bitmap_unit; /* padding and data requirements */
int bitmap_pad; /* padding requirements on bitmaps */
@@ -508,7 +548,11 @@ _XDisplay
XPointer private14;
unsigned max_request_size; /* maximum number 32 bit words in request*/
struct _XrmHashBucketRec *db;
- int (*private15)();
+ int (*private15)(
+#if NeedFunctionPrototypes
+ struct _XDisplay*
+#endif
+ );
char *display_name; /* "host:display" string used on this connect*/
int default_screen; /* default screen for operations */
int nscreens; /* number of screens on this server*/
@@ -541,7 +585,7 @@ typedef struct {
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window it is reported relative to */
- Window root; /* root window that the event occured on */
+ Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
@@ -559,7 +603,7 @@ typedef struct {
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window it is reported relative to */
- Window root; /* root window that the event occured on */
+ Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
@@ -577,7 +621,7 @@ typedef struct {
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
- Window root; /* root window that the event occured on */
+ Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
@@ -594,7 +638,7 @@ typedef struct {
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window window; /* "event" window reported relative to */
- Window root; /* root window that the event occured on */
+ Window root; /* root window that the event occurred on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
@@ -1037,7 +1081,9 @@ typedef struct {
XRectangle max_logical_extent;
} XFontSetExtents;
+/* unused:
typedef void (*XOMProc)();
+ */
typedef struct _XOM *XOM;
typedef struct _XOC *XOC, *XFontSet;
@@ -1091,11 +1137,33 @@ typedef struct {
char **font_name_list;
} XOMFontInfo;
-typedef void (*XIMProc)();
-
typedef struct _XIM *XIM;
typedef struct _XIC *XIC;
+typedef void (*XIMProc)(
+#if NeedFunctionPrototypes
+ XIM,
+ XPointer,
+ XPointer
+#endif
+);
+
+typedef Bool (*XICProc)(
+#if NeedFunctionPrototypes
+ XIC,
+ XPointer,
+ XPointer
+#endif
+);
+
+typedef void (*XIDProc)(
+#if NeedFunctionPrototypes
+ Display*,
+ XPointer,
+ XPointer
+#endif
+);
+
typedef unsigned long XIMStyle;
typedef struct {
@@ -1174,6 +1242,11 @@ typedef struct {
XIMProc callback;
} XIMCallback;
+typedef struct {
+ XPointer client_data;
+ XICProc callback;
+} XICCallback;
+
typedef unsigned long XIMFeedback;
#define XIMReverse 1L
@@ -1496,7 +1569,11 @@ extern int (*XSynchronize(
Display* /* display */,
Bool /* onoff */
#endif
-))();
+))(
+#if NeedNestedPrototypes
+ Display* /* display */
+#endif
+);
extern int (*XSetAfterFunction(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -1506,7 +1583,11 @@ extern int (*XSetAfterFunction(
#endif
) /* procedure */
#endif
-))();
+))(
+#if NeedNestedPrototypes
+ Display* /* display */
+#endif
+);
extern Atom XInternAtom(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -1555,8 +1636,8 @@ extern Cursor XCreateGlyphCursor(
Font /* mask_font */,
unsigned int /* source_char */,
unsigned int /* mask_char */,
- XColor* /* foreground_color */,
- XColor* /* background_color */
+ XColor _Xconst * /* foreground_color */,
+ XColor _Xconst * /* background_color */
#endif
);
extern Cursor XCreateFontCursor(
@@ -4166,16 +4247,10 @@ extern int XWriteBitmapFile(
#endif
);
-extern Bool XSupportsLocale(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern Bool XSupportsLocale (void);
extern char *XSetLocaleModifiers(
-#if NeedFunctionPrototypes
- _Xconst char* /* modifier_list */
-#endif
+ const char* /* modifier_list */
);
extern XOM XOpenOM(
@@ -4329,6 +4404,14 @@ extern int XwcTextEscapement(
#endif
);
+extern int Xutf8TextEscapement(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
extern int XmbTextExtents(
#if NeedFunctionPrototypes
XFontSet /* font_set */,
@@ -4349,6 +4432,16 @@ extern int XwcTextExtents(
#endif
);
+extern int Xutf8TextExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
extern Status XmbTextPerCharExtents(
#if NeedFunctionPrototypes
XFontSet /* font_set */,
@@ -4377,6 +4470,20 @@ extern Status XwcTextPerCharExtents(
#endif
);
+extern Status Xutf8TextPerCharExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
extern void XmbDrawText(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -4401,6 +4508,18 @@ extern void XwcDrawText(
#endif
);
+extern void Xutf8DrawText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XmbTextItem* /* text_items */,
+ int /* nitems */
+#endif
+);
+
extern void XmbDrawString(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -4427,6 +4546,19 @@ extern void XwcDrawString(
#endif
);
+extern void Xutf8DrawString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
extern void XmbDrawImageString(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -4453,6 +4585,19 @@ extern void XwcDrawImageString(
#endif
);
+extern void Xutf8DrawImageString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
extern XIM XOpenIM(
#if NeedFunctionPrototypes
Display* /* dpy */,
@@ -4474,6 +4619,12 @@ extern char *XGetIMValues(
#endif
);
+extern char *XSetIMValues(
+#if NeedVarargsPrototypes
+ XIM /* im */, ...
+#endif
+);
+
extern Display *XDisplayOfIM(
#if NeedFunctionPrototypes
XIM /* im */
@@ -4522,6 +4673,12 @@ extern char *XmbResetIC(
#endif
);
+extern char *Xutf8ResetIC(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
extern char *XSetICValues(
#if NeedVarargsPrototypes
XIC /* ic */, ...
@@ -4569,6 +4726,17 @@ extern int XwcLookupString(
#endif
);
+extern int Xutf8LookupString(
+#if NeedFunctionPrototypes
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ Status* /* status_return */
+#endif
+);
+
extern XVaNestedList XVaCreateNestedList(
#if NeedVarargsPrototypes
int /*unused*/, ...
@@ -4583,8 +4751,8 @@ extern Bool XRegisterIMInstantiateCallback(
struct _XrmHashBucketRec* /* rdb */,
char* /* res_name */,
char* /* res_class */,
- XIMProc /* callback */,
- XPointer* /* client_data */
+ XIDProc /* callback */,
+ XPointer /* client_data */
#endif
);
@@ -4594,8 +4762,8 @@ extern Bool XUnregisterIMInstantiateCallback(
struct _XrmHashBucketRec* /* rdb */,
char* /* res_name */,
char* /* res_class */,
- XIMProc /* callback */,
- XPointer* /* client_data */
+ XIDProc /* callback */,
+ XPointer /* client_data */
#endif
);
@@ -4641,6 +4809,35 @@ extern void XRemoveConnectionWatch(
#endif
);
+extern void XSetAuthorization(
+#if NeedFunctionPrototypes
+ char * /* name */,
+ int /* namelen */,
+ char * /* data */,
+ int /* datalen */
+#endif
+);
+
+extern int _Xmbtowc(
+#if NeedFunctionPrototypes
+ wchar_t * /* wstr */,
+#ifdef ISC
+ char const * /* str */,
+ size_t /* len */
+#else
+ char * /* str */,
+ int /* len */
+#endif
+#endif
+);
+
+extern int _Xwctomb(
+#if NeedFunctionPrototypes
+ char * /* str */,
+ wchar_t /* wc */
+#endif
+);
+
_XFUNCPROTOEND
#endif /* _XLIB_H_ */
diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h
index 3f3826b6..9fca1446 100644
--- a/include/X11/Xlibint.h
+++ b/include/X11/Xlibint.h
@@ -27,6 +27,10 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Xlibint.h,v 3.24 2002/05/31 18:45:42 dawes Exp $ */
+
+#ifndef _XLIBINT_H_
+#define _XLIBINT_H_ 1
/*
* Xlibint.h - Header definition and support file for the internal
@@ -36,10 +40,8 @@ from The Open Group.
* Warning, there be dragons here....
*/
-#ifndef _XLIBINT_H_
-#define _XLIBINT_H_
-
#include <X11/Xlib.h>
+#include <X11/Xproto.h> /* to declare xEvent */
#ifdef WIN32
#define _XFlush _XFlushIt
@@ -76,7 +78,11 @@ struct _XDisplay
XID resource_mask; /* resource ID mask bits */
XID resource_id; /* allocator current ID */
int resource_shift; /* allocator shift to correct bits */
- XID (*resource_alloc)(); /* allocator function */
+ XID (*resource_alloc)( /* allocator function */
+#if NeedFunctionPrototypes
+ struct _XDisplay*
+#endif
+ );
int byte_order; /* screen byte order, LSBFirst, MSBFirst */
int bitmap_unit; /* padding and data requirements */
int bitmap_pad; /* padding requirements on bitmaps */
@@ -95,7 +101,11 @@ struct _XDisplay
char *bufmax; /* Output buffer maximum+1 address. */
unsigned max_request_size; /* maximum number 32 bit words in request*/
struct _XrmHashBucketRec *db;
- int (*synchandler)(); /* Synchronization handler */
+ int (*synchandler)( /* Synchronization handler */
+#if NeedFunctionPrototypes
+ struct _XDisplay*
+#endif
+ );
char *display_name; /* "host:display" string used on this connect*/
int default_screen; /* default screen for operations */
int nscreens; /* number of screens on this server*/
@@ -120,14 +130,26 @@ struct _XDisplay
* list to find the right procedure for each event might be
* expensive if many extensions are being used.
*/
- Bool (*event_vec[128])(); /* vector for wire to event */
- Status (*wire_vec[128])(); /* vector for event to wire */
+ Bool (*event_vec[128])( /* vector for wire to event */
+ Display * /* dpy */,
+ XEvent * /* re */,
+ xEvent * /* event */
+ );
+ Status (*wire_vec[128])( /* vector for event to wire */
+ Display * /* dpy */,
+ XEvent * /* re */,
+ xEvent * /* event */
+ );
KeySym lock_meaning; /* for XLookupString */
struct _XLockInfo *lock; /* multi-thread state, display lock */
struct _XInternalAsync *async_handlers; /* for internal async */
unsigned long bigreq_size; /* max size of big requests */
struct _XLockPtrs *lock_fns; /* pointers to threads functions */
- void (*idlist_alloc)(); /* XID list allocator function */
+ void (*idlist_alloc)( /* XID list allocator function */
+ Display * /* dpy */,
+ XID * /* ids */,
+ int /* count */
+ );
/* things above this line should not move, for binary compatibility */
struct _XKeytrans *key_bindings; /* for XLookupString */
Font cursor_font; /* for XCreateFontCursor */
@@ -135,7 +157,11 @@ struct _XDisplay
unsigned int mode_switch; /* keyboard group modifiers */
unsigned int num_lock; /* keyboard numlock modifiers */
struct _XContextDB *context_db; /* context database */
- Bool (**error_vec)(); /* vector for wire to error */
+ Bool (**error_vec)( /* vector for wire to error */
+ Display * /* display */,
+ XErrorEvent * /* he */,
+ xError * /* we */
+ );
/*
* Xcms information
*/
@@ -154,7 +180,9 @@ struct _XDisplay
struct _XConnWatchInfo *conn_watchers; /* XAddConnectionWatch */
int watcher_count; /* number of conn_watchers */
XPointer filedes; /* struct pollfd cache for _XWaitForReadable */
- int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
+ int (*savedsynchandler)( /* user synchandler when Xlib usurps */
+ Display * /* dpy */
+ );
XID resource_max; /* allocator max ID */
int xcmisc_opcode; /* major opcode for XC-MISC */
struct _XkbInfoRec *xkb_info; /* XKB info */
@@ -204,18 +232,12 @@ typedef struct _XSQEvent
#undef dirty
#endif
-#ifndef X_NOT_STDC_ENV
#include <stdlib.h>
#include <string.h>
-#else
-char *malloc(), *realloc(), *calloc();
-void exit();
-#ifdef SYSV
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#endif
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
/*
* The following definitions can be used for locking requests in multi-threaded
@@ -227,16 +249,27 @@ void exit();
* declarations for C Threads locking
*/
-#include <X11/Xfuncproto.h>
+typedef struct _LockInfoRec *LockInfoPtr;
+/* interfaces for locking.c */
struct _XLockPtrs {
/* used by all, including extensions; do not move */
- void (*lock_display)();
- void (*unlock_display)();
+ void (*lock_display)(
+ Display *dpy
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char *file
+ , int line
+#endif
+ );
+ void (*unlock_display)(
+ Display *dpy
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char *file
+ , int line
+#endif
+ );
};
-typedef struct _LockInfoRec *LockInfoPtr;
-
#if defined(WIN32) && !defined(_XLIBINT_)
#define _XCreateMutex_fn (*_XCreateMutex_fn_p)
#define _XFreeMutex_fn (*_XFreeMutex_fn_p)
@@ -323,16 +356,11 @@ extern LockInfoPtr _Xglobal_lock;
#endif
-#ifndef NULL
-#define NULL 0
-#endif
+#include <stddef.h>
+
#define LOCKED 1
#define UNLOCKED 0
-#ifdef X_NOT_STDC_ENV
-extern int errno; /* Internal system error number. */
-#endif
-
#ifndef BUFSIZE
#define BUFSIZE 2048 /* X output buffer size. */
#endif
@@ -407,7 +435,7 @@ extern int errno; /* Internal system error number. */
*
*/
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#if !defined(UNIXCPP) || defined(ANSICPP)
#define GetReq(name, req) \
WORD64ALIGN\
if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\
@@ -433,7 +461,7 @@ extern int errno; /* Internal system error number. */
/* GetReqExtra is the same as GetReq, but allocates "n" additional
bytes after the request. "n" must be a multiple of 4! */
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#if !defined(UNIXCPP) || defined(ANSICPP)
#define GetReqExtra(name, n, req) \
WORD64ALIGN\
if ((dpy->bufptr + SIZEOF(x##name##Req) + n) > dpy->bufmax)\
@@ -462,7 +490,7 @@ extern int errno; /* Internal system error number. */
* "rid" is the name of the resource.
*/
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#if !defined(UNIXCPP) || defined(ANSICPP)
#define GetResReq(name, rid, req) \
WORD64ALIGN\
if ((dpy->bufptr + SIZEOF(xResourceReq)) > dpy->bufmax)\
@@ -490,7 +518,7 @@ extern int errno; /* Internal system error number. */
* GetEmptyReq is for those requests that have no arguments
* at all.
*/
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#if !defined(UNIXCPP) || defined(ANSICPP)
#define GetEmptyReq(name, req) \
WORD64ALIGN\
if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\
@@ -563,7 +591,7 @@ extern int errno; /* Internal system error number. */
#define SyncHandle() \
if (dpy->synchandler) (*dpy->synchandler)(dpy)
-extern void _XFlushGCCache();
+extern void _XFlushGCCache(Display *dpy, GC gc);
#define FlushGC(dpy, gc) \
if ((gc)->dirty) _XFlushGCCache((dpy), (gc))
/*
@@ -575,12 +603,13 @@ extern void _XFlushGCCache();
* "len" is the length of the data buffer.
*/
#ifndef DataRoutineIsProcedure
-#define Data(dpy, data, len) \
+#define Data(dpy, data, len) {\
if (dpy->bufptr + (len) <= dpy->bufmax) {\
memcpy(dpy->bufptr, data, (int)len);\
dpy->bufptr += ((len) + 3) & ~3;\
} else\
- _XSend(dpy, data, len)
+ _XSend(dpy, data, len);\
+ }
#endif /* DataRoutineIsProcedure */
@@ -613,6 +642,20 @@ extern void _XFlushGCCache();
#define _XRead16(dpy, data, len) _XRead((dpy), (char *)(data), (len))
#ifdef LONG64
#define Data32(dpy, data, len) _XData32(dpy, (long *)data, len)
+extern int _XData32(
+#if NeedFunctionPrototypes
+ Display *dpy,
+ register long *data,
+ unsigned len
+#endif
+);
+extern void _XRead32(
+#if NeedFunctionPrototypes
+ Display *dpy,
+ register long *data,
+ long len
+#endif
+);
#else
#define Data32(dpy, data, len) Data((dpy), (char *)(data), (len))
#define _XRead32(dpy, data, len) _XRead((dpy), (char *)(data), (len))
@@ -733,7 +776,7 @@ typedef struct _XAsyncEState {
int error_count;
} _XAsyncErrorState;
-extern void _XDeqAsyncHandler();
+extern void _XDeqAsyncHandler(Display *dpy, _XAsyncHandler *handler);
#define DeqAsyncHandler(dpy,handler) { \
if (dpy->async_handlers == (handler)) \
dpy->async_handlers = (handler)->next; \
@@ -741,48 +784,150 @@ extern void _XDeqAsyncHandler();
_XDeqAsyncHandler(dpy, handler); \
}
+typedef void (*FreeFuncType) (
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+typedef int (*FreeModmapType) (
+#if NeedFunctionPrototypes
+ XModifierKeymap* /* modmap */
+#endif
+);
+
/*
* This structure is private to the library.
*/
typedef struct _XFreeFuncs {
- void (*atoms)(); /* _XFreeAtomTable */
- int (*modifiermap)(); /* XFreeModifierMap */
- void (*key_bindings)(); /* _XFreeKeyBindings */
- void (*context_db)(); /* _XFreeContextDB */
- void (*defaultCCCs)(); /* _XcmsFreeDefaultCCCs */
- void (*clientCmaps)(); /* _XcmsFreeClientCmaps */
- void (*intensityMaps)(); /* _XcmsFreeIntensityMaps */
- void (*im_filters)(); /* _XFreeIMFilters */
- void (*xkb)(); /* _XkbFreeInfo */
+ FreeFuncType atoms; /* _XFreeAtomTable */
+ FreeModmapType modifiermap; /* XFreeModifierMap */
+ FreeFuncType key_bindings; /* _XFreeKeyBindings */
+ FreeFuncType context_db; /* _XFreeContextDB */
+ FreeFuncType defaultCCCs; /* _XcmsFreeDefaultCCCs */
+ FreeFuncType clientCmaps; /* _XcmsFreeClientCmaps */
+ FreeFuncType intensityMaps; /* _XcmsFreeIntensityMaps */
+ FreeFuncType im_filters; /* _XFreeIMFilters */
+ FreeFuncType xkb; /* _XkbFreeInfo */
} _XFreeFuncRec;
+/* types for InitExt.c */
+typedef int (*CreateGCType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*CopyGCType)(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*FlushGCType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*FreeGCType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*CreateFontType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XFontStruct* /* fs */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*FreeFontType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XFontStruct* /* fs */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*CloseDisplayType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XExtCodes* /* codes */
+#endif
+);
+
+typedef int (*ErrorType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ xError* /* err */,
+ XExtCodes* /* codes */,
+ int* /* ret_code */
+#endif
+);
+
+typedef char* (*ErrorStringType) (
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* code */,
+ XExtCodes* /* codes */,
+ char* /* buffer */,
+ int /* nbytes */
+#endif
+);
+
+typedef void (*PrintErrorType)(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XErrorEvent* /* ev */,
+ void* /* fp */
+#endif
+);
+
+typedef void (*BeforeFlushType)(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XExtCodes* /* codes */,
+ _Xconst char* /* data */,
+ long /* len */
+#endif
+);
+
/*
* This structure is private to the library.
*/
-typedef struct _XExten { /* private to extension mechanism */
- struct _XExten *next; /* next in list */
- XExtCodes codes; /* public information, all extension told */
- int (*create_GC)(); /* routine to call when GC created */
- int (*copy_GC)(); /* routine to call when GC copied */
- int (*flush_GC)(); /* routine to call when GC flushed */
- int (*free_GC)(); /* routine to call when GC freed */
- int (*create_Font)(); /* routine to call when Font created */
- int (*free_Font)(); /* routine to call when Font freed */
- int (*close_display)(); /* routine to call when connection closed */
- int (*error)(); /* who to call when an error occurs */
- char *(*error_string)(); /* routine to supply error string */
- char *name; /* name of this extension */
- void (*error_values)(); /* routine to supply error values */
- void (*before_flush)(); /* routine to call when sending data */
- struct _XExten *next_flush; /* next in list of those with flushes */
+typedef struct _XExten { /* private to extension mechanism */
+ struct _XExten *next; /* next in list */
+ XExtCodes codes; /* public information, all extension told */
+ CreateGCType create_GC; /* routine to call when GC created */
+ CopyGCType copy_GC; /* routine to call when GC copied */
+ FlushGCType flush_GC; /* routine to call when GC flushed */
+ FreeGCType free_GC; /* routine to call when GC freed */
+ CreateFontType create_Font; /* routine to call when Font created */
+ FreeFontType free_Font; /* routine to call when Font freed */
+ CloseDisplayType close_display; /* routine to call when connection closed */
+ ErrorType error; /* who to call when an error occurs */
+ ErrorStringType error_string; /* routine to supply error string */
+ char *name; /* name of this extension */
+ PrintErrorType error_values; /* routine to supply error values */
+ BeforeFlushType before_flush; /* routine to call when sending data */
+ struct _XExten *next_flush; /* next in list of those with flushes */
} _XExtension;
/* extension hooks */
-_XFUNCPROTOBEGIN
-
#ifdef DataRoutineIsProcedure
-extern void Data();
+extern void Data(Display *dpy, char *data, long len);
#endif
extern int _XError(
#if NeedFunctionPrototypes
@@ -875,6 +1020,17 @@ extern char *_XGetAsyncReply(
Bool /* discard */
#endif
);
+extern void _XGetAsyncData(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ char * /* data */,
+ char * /* buf */,
+ int /* len */,
+ int /* skip */,
+ int /* datalen */,
+ int /* discardtotal */
+#endif
+);
extern void _XFlush(
#if NeedFunctionPrototypes
Display* /* dpy */
@@ -934,6 +1090,33 @@ extern void _XDeq(
#endif
);
+extern Bool _XUnknownWireEvent(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ XEvent* /* re */,
+ xEvent* /* event */
+#endif
+);
+extern Status _XUnknownNativeEvent(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ XEvent* /* re */,
+ xEvent* /* event */
+#endif
+);
+
+extern Bool _XWireToEvent(Display *dpy, XEvent *re, xEvent *event);
+extern Bool _XDefaultWireError(Display *display, XErrorEvent *he, xError *we);
+extern Bool _XPollfdCacheInit(Display *dpy);
+extern XID _XAllocID(Display *dpy);
+extern void _XAllocIDs(Display *dpy, XID *ids, int count);
+
+extern int _XFreeExtData(
+#if NeedFunctionPrototypes
+ XExtData* /* extension */
+#endif
+);
+
extern int (*XESetCreateGC(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -1178,14 +1361,14 @@ extern void (*XESetBeforeFlush(
#if NeedNestedPrototypes
Display* /* display */,
XExtCodes* /* codes */,
- char* /* data */,
+ _Xconst char* /* data */,
long /* len */
#endif
) /* proc */
#endif
))(
#if NeedNestedPrototypes
- Display*, XExtCodes*, char*, long
+ Display*, XExtCodes*, _Xconst char*, long
#endif
);
@@ -1232,6 +1415,14 @@ struct _XConnWatchInfo { /* info from XAddConnectionWatch */
struct _XConnWatchInfo *next;
};
+#ifdef __UNIXOS2__
+extern char* __XOS2RedirRoot(
+#if NeedFunctionPrototypes
+ char*
+#endif
+);
+#endif
+
extern int _XTextHeight(
#if NeedFunctionPrototypes
XFontStruct* /* font_struct */,
@@ -1248,7 +1439,8 @@ extern int _XTextHeight16(
#endif
);
-#if defined(WIN32) || defined(__EMX__) /* || defined(OS2) */
+#if defined(WIN32)
+
extern int _XOpenFile(
#if NeedFunctionPrototypes
_Xconst char* /* path */,
@@ -1273,6 +1465,18 @@ extern int _XAccessFile(
#define _XFopenFile(path,mode) fopen(path,mode)
#endif
+/* EvToWire.c */
+extern Status _XEventToWire(Display *dpy, XEvent *re, xEvent *event);
+
+extern int _XF86LoadQueryLocaleFont(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ _Xconst char* /* name*/,
+ XFontStruct** /* xfp*/,
+ Font* /* fidp */
+#endif
+);
+
_XFUNCPROTOEND
#endif /* _XLIBINT_H_ */
diff --git a/include/X11/Xlocale.h b/include/X11/Xlocale.h
index 77702b1b..a2023046 100644
--- a/include/X11/Xlocale.h
+++ b/include/X11/Xlocale.h
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Xlocale.h,v 1.4 2001/12/14 19:54:09 dawes Exp $ */
#ifndef _XLOCALE_H_
#define _XLOCALE_H_
@@ -34,12 +35,6 @@ from The Open Group.
#include <X11/Xosdefs.h>
#ifndef X_LOCALE
-#ifdef X_NOT_STDC_ENV
-#define X_LOCALE
-#endif
-#endif
-
-#ifndef X_LOCALE
#include <locale.h>
#else
@@ -61,9 +56,7 @@ _XFUNCPROTOEND
#define setlocale _Xsetlocale
-#ifndef NULL
-#define NULL 0
-#endif
+#include <stddef.h>
#endif /* X_LOCALE */
diff --git a/include/X11/Xresource.h b/include/X11/Xresource.h
index b195bb51..acbff188 100644
--- a/include/X11/Xresource.h
+++ b/include/X11/Xresource.h
@@ -46,13 +46,14 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/Xresource.h,v 3.8 2001/12/14 19:54:10 dawes Exp $ */
#ifndef _XRESOURCE_H_
#define _XRESOURCE_H_
-/* You must include <X11/Xlib.h> before including this file */
-
+#ifndef _XP_PRINT_SERVER_
#include <X11/Xlib.h>
+#endif
/****************************************************************
****************************************************************
@@ -84,7 +85,7 @@ extern char *Xpermalloc(
*
****************************************************************/
-typedef int XrmQuark, *XrmQuarkList;
+typedef int XrmQuark, *XrmQuarkList;
#define NULLQUARK ((XrmQuark) 0)
typedef char *XrmString;
@@ -285,6 +286,8 @@ extern Bool XrmQGetSearchResource(
*
****************************************************************/
+#ifndef _XP_PRINT_SERVER_
+
extern void XrmSetDatabase(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -298,6 +301,8 @@ extern XrmDatabase XrmGetDatabase(
#endif
);
+#endif /* !_XP_PRINT_SERVER_ */
+
extern XrmDatabase XrmGetFileDatabase(
#if NeedFunctionPrototypes
_Xconst char* /* filename */
@@ -363,7 +368,7 @@ extern Bool XrmEnumerateDatabase(
#endif
);
-extern char *XrmLocaleOfDatabase(
+extern const char *XrmLocaleOfDatabase(
#if NeedFunctionPrototypes
XrmDatabase /* database */
#endif
diff --git a/include/X11/Xutil.h b/include/X11/Xutil.h
index 17438e89..677670d2 100644
--- a/include/X11/Xutil.h
+++ b/include/X11/Xutil.h
@@ -46,6 +46,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/Xutil.h,v 3.5 2003/01/26 02:40:10 dawes Exp $ */
#ifndef _XUTIL_H_
#define _XUTIL_H_
@@ -167,7 +168,9 @@ typedef enum {
XStringStyle, /* STRING */
XCompoundTextStyle, /* COMPOUND_TEXT */
XTextStyle, /* text in owner's encoding (current locale)*/
- XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
+ XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */
+ /* The following is an XFree86 extension, introduced in November 2000 */
+ XUTF8StringStyle /* UTF8_STRING */
} XICCEncodingStyle;
typedef struct {
@@ -227,6 +230,8 @@ typedef struct _XComposeStatus {
#define IsModifierKey(keysym) \
((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
+ || (((KeySym)(keysym) >= XK_ISO_Lock) && \
+ ((KeySym)(keysym) <= XK_ISO_Last_Group_Lock)) \
|| ((KeySym)(keysym) == XK_Mode_switch) \
|| ((KeySym)(keysym) == XK_Num_Lock))
/*
@@ -368,11 +373,7 @@ extern Region XCreateRegion(
#endif
);
-extern char *XDefaultString(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern const char *XDefaultString (void);
extern int XDeleteContext(
#if NeedFunctionPrototypes
@@ -752,6 +753,20 @@ extern void XmbSetWMProperties(
#endif
);
+extern void Xutf8SetWMProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */,
+ _Xconst char* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+#endif
+);
+
extern void XSetWMSizeHints(
#if NeedFunctionPrototypes
Display* /* display */,
@@ -811,29 +826,31 @@ extern int XSubtractRegion(
);
extern int XmbTextListToTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
extern int XwcTextListToTextProperty(
-#if NeedFunctionPrototypes
- Display* /* display */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+extern int Xutf8TextListToTextProperty(
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
extern void XwcFreeStringList(
-#if NeedFunctionPrototypes
- wchar_t** /* list */
-#endif
+ wchar_t** list
);
extern Status XTextPropertyToStringList(
@@ -845,21 +862,24 @@ extern Status XTextPropertyToStringList(
);
extern int XmbTextPropertyToTextList(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XTextProperty* /* text_prop */,
- char*** /* list_return */,
- int* /* count_return */
-#endif
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
);
extern int XwcTextPropertyToTextList(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_return */,
- int* /* count_return */
-#endif
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
+);
+
+extern int Xutf8TextPropertyToTextList(
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
);
extern int XUnionRectWithRegion(
diff --git a/man/AllPlanes.man b/man/AllPlanes.man
index 06e88a79..e7e2313c 100644
--- a/man/AllPlanes.man
+++ b/man/AllPlanes.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/AllPlanes.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH AllPlanes 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH AllPlanes 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
AllPlanes, BlackPixel, WhitePixel, ConnectionNumber, DefaultColormap, DefaultDepth, XListDepths, DefaultGC, DefaultRootWindow, DefaultScreenOfDisplay, DefaultScreen, DefaultVisual, DisplayCells, DisplayPlanes, DisplayString, XMaxRequestSize, XExtendedMaxRequestSize, LastKnownRequestProcessed, NextRequest, ProtocolVersion, ProtocolRevision, QLength, RootWindow, ScreenCount, ScreenOfDisplay, ServerVendor, VendorRelease \- Display macros and functions
.SH SYNTAX
diff --git a/man/BlackPixelOfScreen.man b/man/BlackPixelOfScreen.man
index 4ce663ae..eb23f805 100644
--- a/man/BlackPixelOfScreen.man
+++ b/man/BlackPixelOfScreen.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/BlkPScrn.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH BlackPixelOfScreen 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH BlackPixelOfScreen 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
BlackPixelOfScreen, WhitePixelOfScreen, CellsOfScreen, DefaultColormapOfScreen, DefaultDepthOfScreen, DefaultGCOfScreen, DefaultVisualOfScreen, DoesBackingStore, DoesSaveUnders, DisplayOfScreen, XScreenNumberOfScreen, EventMaskOfScreen, HeightOfScreen, HeightMMOfScreen, MaxCmapsOfScreen, MinCmapsOfScreen, PlanesOfScreen, RootWindowOfScreen, WidthOfScreen, WidthMMOfScreen \- screen information functions and macros
.SH SYNTAX
diff --git a/man/DisplayOfCCC.man b/man/DisplayOfCCC.man
index 56af98b1..ceb5e127 100644
--- a/man/DisplayOfCCC.man
+++ b/man/DisplayOfCCC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/Dis3C.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH DisplayOfCCC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH DisplayOfCCC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
DisplayOfCCC, VisualOfCCC, ScreenNumberOfCCC, ScreenWhitePointOfCCC, ClientWhitePointOfCCC \- Color Conversion Context macros
.SH SYNTAX
diff --git a/man/ImageByteOrder.man b/man/ImageByteOrder.man
index 769ac5a7..9b4ea652 100644
--- a/man/ImageByteOrder.man
+++ b/man/ImageByteOrder.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/ImageOrd.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH ImageByteOrder 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH ImageByteOrder 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
ImageByteOrder, BitmapBitOrder, BitmapPad, BitmapUnit, DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM, XListPixmapFormats, XPixmapFormatValues \- image format functions and macros
.SH SYNTAX
diff --git a/man/IsCursorKey.man b/man/IsCursorKey.man
index c00cefb3..81cd04f9 100644
--- a/man/IsCursorKey.man
+++ b/man/IsCursorKey.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/IsCKey.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH IsCursorKey 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH IsCursorKey 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
IsCursorKey, IsFunctionKey, IsKeypadKey, IsMiscFunctionKey, IsModiferKey, IsPFKey, IsPrivateKeypadKey \- keysym classification macros
.SH SYNTAX
diff --git a/man/XAddConnectionWatch.man b/man/XAddConnectionWatch.man
index 2d52a511..dd494dad 100644
--- a/man/XAddConnectionWatch.man
+++ b/man/XAddConnectionWatch.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XIntConn.man,v 1.3 2001/11/21 22:54:13 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XAddConnectionWatch 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAddConnectionWatch 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAddConnectionWatch, XRemoveConnectionWatch, XProcessInternalConnection, XInternalConnectionNumbers \- handle Xlib internal connections
.SH SYNTAX
@@ -176,12 +178,6 @@ void XProcessInternalConnection\^(\^\fIdisplay\fP, \fIfd\fP\^)
.br
int \fIfd\fP\^;
.LP
-void XProcessInternalConnection\^(\^\fIdisplay\fP, \fIfd\fP\^)
-.br
- Display *\fIdisplay\fP\^;
-.br
- int \fIfd\fP\^;
-.LP
Status XInternalConnectionNumbers\^(\^\fIdisplay\fP, \fIfd_return\fP\^, \fIcount_return\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -255,17 +251,6 @@ has indicated that input is available; otherwise,
the effect is not defined.
.LP
The
-.ZN XProcessInternalConnection
-function processes input available on an internal connection.
-This function should be called for an internal connection only
-after an operating system facility (for example,
-.ZN select
-or
-.ZN poll )
-has indicated that input is available; otherwise,
-the effect is not defined.
-.LP
-The
.ZN XInternalConnectionNumbers
function returns a list of the file descriptors for all internal
connections currently open for the specified display.
diff --git a/man/XAddHost.man b/man/XAddHost.man
index 0431632c..e2ffd94c 100644
--- a/man/XAddHost.man
+++ b/man/XAddHost.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XAddHost.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XAddHost 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAddHost 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAddHost, XAddHosts, XListHosts, XRemoveHost, XRemoveHosts, XSetAccessControl, XEnableAccessControl, XDisableAccessControl, XHostAddress \- control host access and host control structure
.SH SYNTAX
diff --git a/man/XAllocClassHint.man b/man/XAllocClassHint.man
index b1a5ad1d..fc0a173a 100644
--- a/man/XAllocClassHint.man
+++ b/man/XAllocClassHint.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XACHints.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XAllocClassHint 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllocClassHint 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllocClassHint, XSetClassHint, XGetClassHint, XClassHint \- allocate class hints structure and set or read a window's WM_CLASS property
.SH SYNTAX
diff --git a/man/XAllocColor.man b/man/XAllocColor.man
index 5f968467..96c0e5e7 100644
--- a/man/XAllocColor.man
+++ b/man/XAllocColor.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XAllColor.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" e
-.TH XAllocColor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllocColor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllocColor, XAllocNamedColor, XAllocColorCells, XAllocColorPlanes, XFreeColors \- allocate and free colors
.SH SYNTAX
@@ -152,7 +154,7 @@ Status XAllocColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIscreen_in_out\fP\^)
.br
XColor *\fIscreen_in_out\fP\^;
.LP
-Status XAllocNamedColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \
+Status XAllocNamedColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^,
\fIcolor_name\fP\^, \fIscreen_def_return\fP\^, \fIexact_def_return\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -163,7 +165,7 @@ Status XAllocNamedColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \
.br
XColor *\fIscreen_def_return\fP\^, *\fIexact_def_return\fP\^;
.LP
-Status XAllocColorCells\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcontig\fP\^, \
+Status XAllocColorCells\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcontig\fP\^,
\fIplane_masks_return\fP\^, \fInplanes\fP\^,
.br
\fIpixels_return\fP\^, \fInpixels\fP\^)
diff --git a/man/XAllocIconSize.man b/man/XAllocIconSize.man
index 9d719601..a9d38a53 100644
--- a/man/XAllocIconSize.man
+++ b/man/XAllocIconSize.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XAIcSize.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XAllocIconSize 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllocIconSize 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllocIconSize, XSetIconSizes, XGetIconSizes, XIconSize \- allocate icon size structure and set or read a window's WM_ICON_SIZES property
.SH SYNTAX
diff --git a/man/XAllocSizeHints.man b/man/XAllocSizeHints.man
index 082a2f47..5d6198d4 100644
--- a/man/XAllocSizeHints.man
+++ b/man/XAllocSizeHints.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XASHints.man,v 1.4 2001/02/09 03:47:44 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XAllocSizeHints 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllocSizeHints 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XSetWMSizeHints, XGetWMSizeHints, XSizeHints \- allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
.SH SYNTAX
@@ -154,7 +156,7 @@ void XSetWMNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP\^)
.br
XSizeHints *\fIhints\fP\^;
.LP
-Status XGetWMNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP, \
+Status XGetWMNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP,
\fIsupplied_return\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -175,7 +177,7 @@ void XSetWMSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP, \fIproperty\fP\^)
.br
Atom \fIproperty\fP\^;
.LP
-Status XGetWMSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP, \
+Status XGetWMSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP,
\fIsupplied_return\fP, \fIproperty\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -355,7 +357,7 @@ structure contains:
.TS
lw(.5i) lw(1.1i) lw(1.5i) lw(3.1i).
T{
-#define
+\&#define
T} T{
.ZN USPosition
T} T{
@@ -364,7 +366,7 @@ T} T{
/* user specified x, y */
T}
T{
-#define
+\&#define
T} T{
.ZN USSize
T} T{
@@ -373,7 +375,7 @@ T} T{
/* user specified width, height */
T}
T{
-#define
+\&#define
T} T{
.ZN PPosition
T} T{
@@ -382,7 +384,7 @@ T} T{
/* program specified position */
T}
T{
-#define
+\&#define
T} T{
.ZN PSize
T} T{
@@ -391,7 +393,7 @@ T} T{
/* program specified size */
T}
T{
-#define
+\&#define
T} T{
.ZN PMinSize
T} T{
@@ -400,7 +402,7 @@ T} T{
/* program specified minimum size */
T}
T{
-#define
+\&#define
T} T{
.ZN PMaxSize
T} T{
@@ -409,7 +411,7 @@ T} T{
/* program specified maximum size */
T}
T{
-#define
+\&#define
T} T{
.ZN PResizeInc
T} T{
@@ -418,7 +420,7 @@ T} T{
/* program specified resize increments */
T}
T{
-#define
+\&#define
T} T{
.ZN PAspect
T} T{
@@ -427,21 +429,21 @@ T} T{
/* program specified min and max aspect ratios */
T}
T{
-#define
+\&#define
T} T{
.ZN PBaseSize
T} T{
(1L << 8)
T}
T{
-#define
+\&#define
T} T{
.ZN PWinGravity
T} T{
(1L << 9)
T}
T{
-#define
+\&#define
T} T{
.ZN PAllHints
T} T{
diff --git a/man/XAllocStandardColormap.man b/man/XAllocStandardColormap.man
index e7c2173a..685de492 100644
--- a/man/XAllocStandardColormap.man
+++ b/man/XAllocStandardColormap.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XASCmap.man,v 1.4 2001/02/09 03:47:44 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,13 +142,13 @@
..
.ny0
'\" t
-.TH XAllocStandardColormap 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllocStandardColormap 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap \- allocate, set, or read a standard colormap structure
.SH SYNTAX
XStandardColormap *XAllocStandardColormap\^(\|)
.LP
-void XSetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap\fP, \
+void XSetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap\fP,
\fIcount\fP, \fIproperty\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -159,7 +161,7 @@ void XSetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap\fP, \
.br
Atom \fIproperty\fP\^;
.LP
-Status XGetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap_return\fP, \
+Status XGetRGBColormaps\^(\^\fIdisplay\fP, \fIw\fP, \fIstd_colormap_return\fP,
\fIcount_return\fP, \fIproperty\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -302,7 +304,7 @@ structure contains:
.TS
lw(.5i) lw(2i) lw(1i).
T{
-#define
+\&#define
T} T{
.ZN ReleaseByFreeingColormap
T} T{
diff --git a/man/XAllocWMHints.man b/man/XAllocWMHints.man
index 6331ada2..816f014e 100644
--- a/man/XAllocWMHints.man
+++ b/man/XAllocWMHints.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XAWMHints.man,v 1.3 2001/02/07 22:35:20 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XAllocWMHints 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllocWMHints 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllocWMHints, XSetWMHints, XGetWMHints, XWMHints \- allocate window manager hints structure and set or read a window's WM_HINTS property
.SH SYNTAX
@@ -228,63 +230,63 @@ structure contains:
.TS
lw(.5i) lw(2.5i) lw(2.5i).
T{
-#define
+\&#define
T} T{
.ZN InputHint
T} T{
(1L << 0)
T}
T{
-#define
+\&#define
T} T{
.ZN StateHint
T} T{
(1L << 1)
T}
T{
-#define
+\&#define
T} T{
.ZN IconPixmapHint
T} T{
(1L << 2)
T}
T{
-#define
+\&#define
T} T{
.ZN IconWindowHint
T} T{
(1L << 3)
T}
T{
-#define
+\&#define
T} T{
.ZN IconPositionHint
T} T{
(1L << 4)
T}
T{
-#define
+\&#define
T} T{
.ZN IconMaskHint
T} T{
(1L << 5)
T}
T{
-#define
+\&#define
T} T{
.ZN WindowGroupHint
T} T{
(1L << 6)
T}
T{
-#define
+\&#define
T} T{
.ZN UrgencyHint
T} T{
(1L << 8)
T}
T{
-#define
+\&#define
T} T{
.ZN AllHints
T} T{
@@ -351,7 +353,7 @@ The definitions for the initial_state flag are:
.TS
lw(.5i) lw(2i) lw(.2i) lw(2.8i).
T{
-#define
+\&#define
T} T{
.ZN WithdrawnState
T} T{
@@ -359,7 +361,7 @@ T} T{
T} T{
T}
T{
-#define
+\&#define
T} T{
.ZN NormalState
T} T{
@@ -368,7 +370,7 @@ T} T{
/* most applications start this way */
T}
T{
-#define
+\&#define
T} T{
.ZN IconicState
T} T{
diff --git a/man/XAllowEvents.man b/man/XAllowEvents.man
index 545aaf33..e2e77da3 100644
--- a/man/XAllowEvents.man
+++ b/man/XAllowEvents.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XAllEvnt.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XAllowEvents 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAllowEvents 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAllowEvents \- release queued events
.SH SYNTAX
diff --git a/man/XAnyEvent.man b/man/XAnyEvent.man
index 5a6196e3..2560d600 100644
--- a/man/XAnyEvent.man
+++ b/man/XAnyEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XAnyEvent.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XAnyEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XAnyEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XAnyEvent, XEvent \- generic X event structures
.SH STRUCTURES
diff --git a/man/XButtonEvent.man b/man/XButtonEvent.man
index 062f3115..929d4222 100644
--- a/man/XButtonEvent.man
+++ b/man/XButtonEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XButEvent.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XButtonEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XButtonEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XButtonEvent, XKeyEvent, XMotionEvent \- KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures
.SH STRUCTURES
diff --git a/man/XChangeKeyboardControl.man b/man/XChangeKeyboardControl.man
index c78cd78e..bf1e9e80 100644
--- a/man/XChangeKeyboardControl.man
+++ b/man/XChangeKeyboardControl.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCKCntrl.man,v 1.3 2001/02/07 22:35:20 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XChangeKeyboardControl 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XChangeKeyboardControl 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XChangeKeyboardControl, XGetKeyboardControl, XAutoRepeatOn, XAutoRepeatOff, XBell, XQueryKeymap, XKeyboardControl \- manipulate keyboard settings and keyboard control structure
.SH SYNTAX
@@ -271,56 +273,56 @@ structure contains:
.TS
lw(.5i) lw(2.5i) lw(.8i).
T{
-#define
+\&#define
T} T{
.ZN KBKeyClickPercent
T} T{
(1L<<0)
T}
T{
-#define
+\&#define
T} T{
.ZN KBBellPercent
T} T{
(1L<<1)
T}
T{
-#define
+\&#define
T} T{
.ZN KBBellPitch
T} T{
(1L<<2)
T}
T{
-#define
+\&#define
T} T{
.ZN KBBellDuration
T} T{
(1L<<3)
T}
T{
-#define
+\&#define
T} T{
.ZN KBLed
T} T{
(1L<<4)
T}
T{
-#define
+\&#define
T} T{
.ZN KBLedMode
T} T{
(1L<<5)
T}
T{
-#define
+\&#define
T} T{
.ZN KBKey
T} T{
(1L<<6)
T}
T{
-#define
+\&#define
T} T{
.ZN KBAutoRepeatMode
T} T{
diff --git a/man/XChangeKeyboardMapping.man b/man/XChangeKeyboardMapping.man
index 02f39054..c4fcdbdb 100644
--- a/man/XChangeKeyboardMapping.man
+++ b/man/XChangeKeyboardMapping.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCKMping.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XChangeKeyboardMapping 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XChangeKeyboardMapping 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XChangeKeyboardMapping, XGetKeyboardMapping, XDisplayKeycodes, XSetModifierMapping, XGetModifierMapping, XNewModifiermap, XInsertModifiermapEntry, XDeleteModifiermapEntry, XFreeModifierMap XModifierKeymap \- manipulate keyboard encoding and keyboard encoding structure
.SH SYNTAX
@@ -166,7 +168,7 @@ KeySym *XGetKeyboardMapping(\^\fIdisplay\fP, \fIfirst_keycode\fP, \fIkeycode_cou
.br
int *\fIkeysyms_per_keycode_return\fP\^;
.LP
-XDisplayKeycodes\^(\^\fIdisplay\fP\^, \fImin_keycodes_return\fP\^, \
+XDisplayKeycodes\^(\^\fIdisplay\fP\^, \fImin_keycodes_return\fP\^,
\fImax_keycodes_return\fP\^)
.br
Display *\^\fIdisplay\fP\^;
@@ -188,7 +190,7 @@ XModifierKeymap *XNewModifiermap(\^\fImax_keys_per_mod\fP\^)
.br
int \fImax_keys_per_mod\fP\^;
.LP
-XModifierKeymap *XInsertModifiermapEntry\^(\^\fImodmap\fP, \
+XModifierKeymap *XInsertModifiermapEntry\^(\^\fImodmap\fP,
\fIkeycode_entry\fP, \fImodifier\fP\^)
.br
XModifierKeymap *\fImodmap\fP\^;
@@ -197,7 +199,7 @@ XModifierKeymap *XInsertModifiermapEntry\^(\^\fImodmap\fP, \
.br
int \fImodifier\fP\^;
.LP
-XModifierKeymap *XDeleteModifiermapEntry\^(\^\fImodmap\fP, \
+XModifierKeymap *XDeleteModifiermapEntry\^(\^\fImodmap\fP,
\fIkeycode_entry\fP, \fImodifier\fP\^)
.br
XModifierKeymap *\fImodmap\fP\^;
diff --git a/man/XChangePointerControl.man b/man/XChangePointerControl.man
index edf0e95a..4cfa5028 100644
--- a/man/XChangePointerControl.man
+++ b/man/XChangePointerControl.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCPCntrl.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XChangePointerControl 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XChangePointerControl 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XChangePointerControl, XGetPointerControl \- control pointer
.SH SYNTAX
diff --git a/man/XChangeSaveSet.man b/man/XChangeSaveSet.man
index 511a4644..df04b9f5 100644
--- a/man/XChangeSaveSet.man
+++ b/man/XChangeSaveSet.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCSSet.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XChangeSaveSet 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XChangeSaveSet 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XChangeSaveSet, XAddToSaveSet, XRemoveFromSaveSet \- change a client's save set
.SH SYNTAX
diff --git a/man/XChangeWindowAttributes.man b/man/XChangeWindowAttributes.man
index 5e8da053..d62816ea 100644
--- a/man/XChangeWindowAttributes.man
+++ b/man/XChangeWindowAttributes.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCWAttrib.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XChangeWindowAttributes 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XChangeWindowAttributes 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XChangeWindowAttributes, XSetWindowBackground, XSetWindowBackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap, XSetWindowColormap \- change window attributes
.SH SYNTAX
diff --git a/man/XCirculateEvent.man b/man/XCirculateEvent.man
index 7f95a454..a5327157 100644
--- a/man/XCirculateEvent.man
+++ b/man/XCirculateEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCirEvent.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCirculateEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCirculateEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCirculateEvent \- CirculateNotify event structure
.SH STRUCTURES
diff --git a/man/XCirculateRequestEvent.man b/man/XCirculateRequestEvent.man
index 0d94cbf2..f30667cf 100644
--- a/man/XCirculateRequestEvent.man
+++ b/man/XCirculateRequestEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCirREven.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCirculateRequestEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCirculateRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCirculateRequestEvent \- CirculateRequest event structure
.SH STRUCTURES
diff --git a/man/XClearArea.man b/man/XClearArea.man
index e7333610..5adfda8f 100644
--- a/man/XClearArea.man
+++ b/man/XClearArea.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XClrArea.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XClearArea 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XClearArea 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XClearArea, XClearWindow \- clear area or window
.SH SYNTAX
@@ -174,7 +176,7 @@ Specifies the window.
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which are relative to the origin of the window \
+.ds Xy , which are relative to the origin of the window
and specify the upper-left corner of the rectangle
.IP \fIx\fP 1i
.br
diff --git a/man/XClientMessageEvent.man b/man/XClientMessageEvent.man
index 56f319a4..6196ccc6 100644
--- a/man/XClientMessageEvent.man
+++ b/man/XClientMessageEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCMEvent.man,v 1.2 2001/01/27 18:19:56 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XClientMessageEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XClientMessageEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XClientMessageEvent \- ClientMessage event structure
.SH STRUCTURES
diff --git a/man/XColormapEvent.man b/man/XColormapEvent.man
index 478e6c63..e00a1c8c 100644
--- a/man/XColormapEvent.man
+++ b/man/XColormapEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCmpEvent.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XColormapEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XColormapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XColormapEvent \- ColormapNotify event structure
.SH STRUCTURES
diff --git a/man/XConfigureEvent.man b/man/XConfigureEvent.man
index a06fe210..1f63a1db 100644
--- a/man/XConfigureEvent.man
+++ b/man/XConfigureEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XConEvent.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XConfigureEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XConfigureEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XConfigureEvent \- ConfigureNotify event structure
.SH STRUCTURES
diff --git a/man/XConfigureRequestEvent.man b/man/XConfigureRequestEvent.man
index 128268ec..7a36e4c2 100644
--- a/man/XConfigureRequestEvent.man
+++ b/man/XConfigureRequestEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XConREven.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XConfigureRequestEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XConfigureRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XConfigureRequestEvent \- ConfigureRequest event structure
.SH STRUCTURES
diff --git a/man/XConfigureWindow.man b/man/XConfigureWindow.man
index d0aa0d68..db253ff9 100644
--- a/man/XConfigureWindow.man
+++ b/man/XConfigureWindow.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XConfWin.man,v 1.4 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XConfigureWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XConfigureWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth, XWindowChanges \- configure windows and window changes structure
.SH SYNTAX
@@ -209,8 +211,8 @@ Specifies the width of the window border.
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which define the new location of the top-left pixel \
-of the window's border or the window itself if it has no border \
+.ds Xy , which define the new location of the top-left pixel
+of the window's border or the window itself if it has no border
or define the new position of the window relative to its parent
.IP \fIx\fP 1i
.br
@@ -365,49 +367,49 @@ structure contains:
.TS
lw(.5i) lw(2.5i) lw(.8i).
T{
-#define
+\&#define
T} T{
.ZN CWX
T} T{
(1<<0)
T}
T{
-#define
+\&#define
T} T{
.ZN CWY
T} T{
(1<<1)
T}
T{
-#define
+\&#define
T} T{
.ZN CWWidth
T} T{
(1<<2)
T}
T{
-#define
+\&#define
T} T{
.ZN CWHeight
T} T{
(1<<3)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBorderWidth
T} T{
(1<<4)
T}
T{
-#define
+\&#define
T} T{
.ZN CWSibling
T} T{
(1<<5)
T}
T{
-#define
+\&#define
T} T{
.ZN CWStackMode
T} T{
diff --git a/man/XCopyArea.man b/man/XCopyArea.man
index 89554599..19cf637e 100644
--- a/man/XCopyArea.man
+++ b/man/XCopyArea.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCopyArea.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCopyArea 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCopyArea 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCopyArea, XCopyPlane \- copy areas
.SH SYNTAX
@@ -172,7 +174,7 @@ XCopyPlane\^(\^\fIdisplay\fP, \fIsrc\fP\^, \fIdest\fP\^, \fIgc\fP\^, \fIsrc_x\fP
.br
unsigned long \fIplane\fP\^;
.SH ARGUMENTS
-.ds Dx , which are relative to the origin of the destination rectangle \
+.ds Dx , which are relative to the origin of the destination rectangle
and specify its upper-left corner
.IP \fIdest_x\fP 1i
.br
@@ -198,7 +200,7 @@ Specify the source and destination rectangles to be combined.
Specify the x and y coordinates,
which are relative to the origin of the source rectangle
and specify its upper-left corner.
-.ds Wh , which are the dimensions of both the source \
+.ds Wh , which are the dimensions of both the source
and destination rectangles
.IP \fIwidth\fP 1i
.br
diff --git a/man/XCreateColormap.man b/man/XCreateColormap.man
index a9ef6eec..e4eed2e9 100644
--- a/man/XCreateColormap.man
+++ b/man/XCreateColormap.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreCmap.man,v 1.3 2001/07/23 20:47:17 paulo Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateColormap 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateColormap 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateColormap, XCopyColormapAndFree, XFreeColormap, XColor \- create, copy, or destroy colormaps and color structure
.SH SYNTAX
@@ -371,7 +373,7 @@ alternatives can generate this error.
A value for a Window argument does not name a defined Window.
.SH "SEE ALSO"
XAllocColor(3X11),
-XChangeWindowAtrributes(3X11),
+XChangeWindowAttributes(3X11),
XCreateWindow(3X11),
XQueryColor(3X11),
XStoreColors(3X11)
diff --git a/man/XCreateFontCursor.man b/man/XCreateFontCursor.man
index 0fb62b1c..f4b713cd 100644
--- a/man/XCreateFontCursor.man
+++ b/man/XCreateFontCursor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreFCur.man,v 1.3 2001/02/07 22:35:20 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,11 +140,11 @@
.el .sp 10p
..
.ny0
-.TH XCreateFontCursor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateFontCursor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor \- create cursors
.SH SYNTAX
-#include <X11/cursorfont.h>
+\&#include <X11/cursorfont.h>
.sp 6p
Cursor XCreateFontCursor\^(\^\fIdisplay\fP, \fIshape\fP\^)
.br
diff --git a/man/XCreateFontSet.man b/man/XCreateFontSet.man
index 842c0e3a..35406dc1 100644
--- a/man/XCreateFontSet.man
+++ b/man/XCreateFontSet.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreFSet.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateFontSet 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateFontSet 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateFontSet, XFreeFontSet \- create and free an international text drawing font set
.SH SYNTAX
diff --git a/man/XCreateGC.man b/man/XCreateGC.man
index bcf83393..4189eb8d 100644
--- a/man/XCreateGC.man
+++ b/man/XCreateGC.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreGC.man,v 1.5 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XCreateGC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateGC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure
.SH SYNTAX
@@ -172,7 +174,7 @@ XChangeGC\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIvaluemask\fP\^, \fIvalues\fP\^)
.br
XGCValues *\^\fIvalues\fP\^;
.LP
-Status XGetGCValues\^(\^\fIdisplay\fP, \fIgc\fP, \fIvaluemask\fP, \
+Status XGetGCValues\^(\^\fIdisplay\fP, \fIgc\fP, \fIvaluemask\fP,
\fIvalues_return\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -343,140 +345,163 @@ structure contains:
/* GC attribute value mask bits */
.TS
lw(.5i) lw(2.5i) lw(.75i).
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCFunction
T} T{
(1L<<0)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCPlaneMask
T} T{
(1L<<1)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCForeground
T} T{
(1L<<2)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCBackground
T} T{
(1L<<3)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCLineWidth
T} T{
(1L<<4)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCLineStyle
T} T{
(1L<<5)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCCapStyle
T} T{
(1L<<6)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCJoinStyle
T} T{
(1L<<7)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCFillStyle
T} T{
(1L<<8)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCFillRule
T} T{
(1L<<9)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCTile
T} T{
(1L<<10)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCStipple
T} T{
(1L<<11)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCTileStipXOrigin
T} T{
(1L<<12)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCTileStipYOrigin
T} T{
(1L<<13)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCFont
T} T{
(1L<<14)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCSubwindowMode
T} T{
(1L<<15)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCGraphicsExposures
T} T{
(1L<<16)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCClipXOrigin
T} T{
(1L<<17)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCClipYOrigin
T} T{
(1L<<18)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCClipMask
T} T{
(1L<<19)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCDashOffset
T} T{
(1L<<20)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCDashList
T} T{
(1L<<21)
T}
-#define\
- T{
+T{
+\&#define
+T} T{
.ZN GCArcMode
T} T{
(1L<<22)
diff --git a/man/XCreateIC.man b/man/XCreateIC.man
index 27626f31..6cf7bb34 100644
--- a/man/XCreateIC.man
+++ b/man/XCreateIC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreIC.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateIC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateIC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateIC, XDestroyIC, XIMOfIC \- create, destroy, and obtain the input method of an input context
.SH SYNTAX
diff --git a/man/XCreateOC.man b/man/XCreateOC.man
index 144ca548..001ba758 100644
--- a/man/XCreateOC.man
+++ b/man/XCreateOC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreOC.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateOC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateOC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateOC, XDestroyOC, XSetOCValues, XGetOCValues, XOMOfOC \- create output contexts
.SH SYNTAX
diff --git a/man/XCreatePixmap.man b/man/XCreatePixmap.man
index b2748461..d7ac1bf1 100644
--- a/man/XCreatePixmap.man
+++ b/man/XCreatePixmap.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCrePmap.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreatePixmap 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreatePixmap 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreatePixmap, XFreePixmap \- create or destroy pixmaps
.SH SYNTAX
diff --git a/man/XCreateRegion.man b/man/XCreateRegion.man
index 70e8a0ff..58a0039c 100644
--- a/man/XCreateRegion.man
+++ b/man/XCreateRegion.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreReg.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateRegion 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateRegion 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateRegion, XSetRegion, XDestroyRegion \- create or destroy regions
.SH SYNTAX
diff --git a/man/XCreateWindow.man b/man/XCreateWindow.man
index 9faaa355..258aaa22 100644
--- a/man/XCreateWindow.man
+++ b/man/XCreateWindow.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreWin.man,v 1.4 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XCreateWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateWindow, XCreateSimpleWindow, XSetWindowAttributes \- create windows and window attributes structure
.SH SYNTAX
@@ -230,14 +232,14 @@ A visual of
.ZN CopyFromParent
means the visual type is taken from the
parent.
-.ds Wh , which are the created window's inside dimensions \
+.ds Wh , which are the created window's inside dimensions
and do not include the created window's borders
.IP \fIwidth\fP 1i
.br
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which are the top-left outside corner of the window's \
+.ds Xy , which are the top-left outside corner of the window's
borders and are relative to the inside of the parent window's borders
.IP \fIx\fP 1i
.br
@@ -357,105 +359,105 @@ structure contains:
.TS
lw(.5i) lw(2.5i) lw(.8i).
T{
-#define
+\&#define
T} T{
.ZN CWBackPixmap
T} T{
(1L<<0)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBackPixel
T} T{
(1L<<1)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBorderPixmap
T} T{
(1L<<2)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBorderPixel
T} T{
(1L<<3)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBitGravity
T} T{
(1L<<4)
T}
T{
-#define
+\&#define
T} T{
.ZN CWWinGravity
T} T{
(1L<<5)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBackingStore
T} T{
(1L<<6)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBackingPlanes
T} T{
(1L<<7)
T}
T{
-#define
+\&#define
T} T{
.ZN CWBackingPixel
T} T{
(1L<<8)
T}
T{
-#define
+\&#define
T} T{
.ZN CWOverrideRedirect
T} T{
(1L<<9)
T}
T{
-#define
+\&#define
T} T{
.ZN CWSaveUnder
T} T{
(1L<<10)
T}
T{
-#define
+\&#define
T} T{
.ZN CWEventMask
T} T{
(1L<<11)
T}
T{
-#define
+\&#define
T} T{
.ZN CWDontPropagate
T} T{
(1L<<12)
T}
T{
-#define
+\&#define
T} T{
.ZN CWColormap
T} T{
(1L<<13)
T}
T{
-#define
+\&#define
T} T{
.ZN CWCursor
T} T{
diff --git a/man/XCreateWindowEvent.man b/man/XCreateWindowEvent.man
index 4eac91fe..ce3caf83 100644
--- a/man/XCreateWindowEvent.man
+++ b/man/XCreateWindowEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCWEvent.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateWindowEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateWindowEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCreateWindowEvent \- CreateNotify event structure
.SH STRUCTURES
diff --git a/man/XCrossingEvent.man b/man/XCrossingEvent.man
index 5bf8d4fc..64a4e5a8 100644
--- a/man/XCrossingEvent.man
+++ b/man/XCrossingEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCroEvent.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCrossingEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCrossingEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XCrossingEvent \- EnterNotify and LeaveNotify event structure
.SH STRUCTURES
diff --git a/man/XDefineCursor.man b/man/XDefineCursor.man
index aacdeee8..b260d0c3 100644
--- a/man/XDefineCursor.man
+++ b/man/XDefineCursor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDefCur.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDefineCursor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDefineCursor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDefineCursor, XUndefineCursor \- define cursors
.SH SYNTAX
diff --git a/man/XDestroyWindow.man b/man/XDestroyWindow.man
index dd413bec..c96bb281 100644
--- a/man/XDestroyWindow.man
+++ b/man/XDestroyWindow.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDesWin.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDestroyWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDestroyWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDestroyWindow, XDestroySubwindows \- destroy windows
.SH SYNTAX
diff --git a/man/XDestroyWindowEvent.man b/man/XDestroyWindowEvent.man
index fabfe00f..34175feb 100644
--- a/man/XDestroyWindowEvent.man
+++ b/man/XDestroyWindowEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDWEvent.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDestroyWindowEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDestroyWindowEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDestroyWindowEvent \- DestroyNotify event structure
.SH STRUCTURES
diff --git a/man/XDrawArc.man b/man/XDrawArc.man
index 37236458..fe1fae67 100644
--- a/man/XDrawArc.man
+++ b/man/XDrawArc.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrArc.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" e
-.TH XDrawArc 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawArc 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawArc, XDrawArcs, XArc \- draw arcs and arc structure
.SH SYNTAX
@@ -192,7 +194,7 @@ Specifies the number of arcs in the array.
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which are relative to the origin of the drawable \
+.ds Xy , which are relative to the origin of the drawable
and specify the upper-left corner of the bounding rectangle
.IP \fIx\fP 1i
.br
diff --git a/man/XDrawImageString.man b/man/XDrawImageString.man
index 2470f5b1..0b471be1 100644
--- a/man/XDrawImageString.man
+++ b/man/XDrawImageString.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrIStr.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDrawImageString 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawImageString 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawImageString, XDrawImageString16 \- draw image text
.SH SYNTAX
@@ -180,7 +182,7 @@ Specifies the GC.
Specifies the number of characters in the string argument.
.IP \fIstring\fP 1i
Specifies the character string.
-.ds Xy , which are relative to the origin of the specified drawable \
+.ds Xy , which are relative to the origin of the specified drawable
and define the origin of the first character
.IP \fIx\fP 1i
.br
diff --git a/man/XDrawLine.man b/man/XDrawLine.man
index 637aa45d..5a4fd336 100644
--- a/man/XDrawLine.man
+++ b/man/XDrawLine.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrLine.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDrawLine 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawLine 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawLine, XDrawLines, XDrawSegments, XSegment \- draw lines, polygons, and line structure
.SH SYNTAX
diff --git a/man/XDrawPoint.man b/man/XDrawPoint.man
index f06b8657..82a34b6c 100644
--- a/man/XDrawPoint.man
+++ b/man/XDrawPoint.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrPoint.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDrawPoint 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawPoint 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawPoint, XDrawPoints, XPoint \- draw points and points structure
.SH SYNTAX
diff --git a/man/XDrawRectangle.man b/man/XDrawRectangle.man
index a9417bcf..a2671d01 100644
--- a/man/XDrawRectangle.man
+++ b/man/XDrawRectangle.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrRect.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDrawRectangle 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawRectangle 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawRectangle, XDrawRectangles, XRectangle \- draw rectangles and rectangles structure
.SH SYNTAX
diff --git a/man/XDrawString.man b/man/XDrawString.man
index 564a87c7..5e250972 100644
--- a/man/XDrawString.man
+++ b/man/XDrawString.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrString.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDrawString 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawString 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawString, XDrawString16 \- draw text characters
.SH SYNTAX
@@ -180,7 +182,7 @@ Specifies the GC.
Specifies the number of characters in the string argument.
.IP \fIstring\fP 1i
Specifies the character string.
-.ds Xy , which are relative to the origin of the specified drawable \
+.ds Xy , which are relative to the origin of the specified drawable
and define the origin of the first character
.IP \fIx\fP 1i
.br
diff --git a/man/XDrawText.man b/man/XDrawText.man
index 4363d909..6a48ee0b 100644
--- a/man/XDrawText.man
+++ b/man/XDrawText.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XDrText.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XDrawText 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XDrawText 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XDrawText, XDrawText16, XTextItem, XTextItem16 \- draw polytext text and text drawing structures
.SH SYNTAX
@@ -180,7 +182,7 @@ Specifies the GC.
Specifies an array of text items.
.IP \fInitems\fP 1i
Specifies the number of text items in the array.
-.ds Xy , which are relative to the origin of the specified drawable \
+.ds Xy , which are relative to the origin of the specified drawable
and define the origin of the first character
.IP \fIx\fP 1i
.br
diff --git a/man/XEmptyRegion.man b/man/XEmptyRegion.man
index d7afd204..fc815f6b 100644
--- a/man/XEmptyRegion.man
+++ b/man/XEmptyRegion.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XERegion.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XEmptyRegion 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XEmptyRegion 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XEmptyRegion, XEqualRegion, XPointInRegion, XRectInRegion \- determine if regions are empty or equal
.SH SYNTAX
@@ -177,7 +179,7 @@ Specify the two regions.
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which define the point \
+.ds Xy , which define the point
or the coordinates of the upper-left corner of the rectangle
.IP \fIx\fP 1i
.br
diff --git a/man/XErrorEvent.man b/man/XErrorEvent.man
index e9ee1603..de7ad4c4 100644
--- a/man/XErrorEvent.man
+++ b/man/XErrorEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XErrEvent.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XErrorEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XErrorEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XErrorEvent \- X error event structure
.SH STRUCTURES
diff --git a/man/XExposeEvent.man b/man/XExposeEvent.man
index 29523deb..8816189a 100644
--- a/man/XExposeEvent.man
+++ b/man/XExposeEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XExpEvent.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XExposeEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XExposeEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XExposeEvent \- Expose event structure
.SH STRUCTURES
diff --git a/man/XExtentsOfFontSet.man b/man/XExtentsOfFontSet.man
index 7fec44c9..3873b243 100644
--- a/man/XExtentsOfFontSet.man
+++ b/man/XExtentsOfFontSet.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XEofFSet.man,v 1.2 2001/01/27 18:19:58 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XExtentsOfFontSet 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XExtentsOfFontSet 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XExtentsOfFontSet \- obtain the maximum extents structure for a font set
.SH SYNTAX
diff --git a/man/XFillRectangle.man b/man/XFillRectangle.man
index f05ae5a6..6cf034a3 100644
--- a/man/XFillRectangle.man
+++ b/man/XFillRectangle.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFillRect.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFillRectangle 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFillRectangle 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFillRectangle, XFillRectangles, XFillPolygon, XFillArc, XFillArcs \- fill rectangles, polygons, or arcs
.SH SYNTAX
@@ -245,14 +247,14 @@ You can pass
.ZN Convex ,
or
.ZN Nonconvex .
-.ds Wh , which are the dimensions of the rectangle to be filled \
+.ds Wh , which are the dimensions of the rectangle to be filled
or the major and minor axes of the arc
.IP \fIwidth\fP 1i
.br
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which are relative to the origin of the drawable \
+.ds Xy , which are relative to the origin of the drawable
and specify the upper-left corner of the rectangle
.IP \fIx\fP 1i
.br
diff --git a/man/XFilterEvent.man b/man/XFilterEvent.man
index b915de33..a6aa3e9a 100644
--- a/man/XFilterEvent.man
+++ b/man/XFilterEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFEvent.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFilterEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFilterEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFilterEvent \- filter X events for an input method
.SH SYNTAX
diff --git a/man/XFlush.man b/man/XFlush.man
index f8d9bcaa..74723183 100644
--- a/man/XFlush.man
+++ b/man/XFlush.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFlush.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFlush 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFlush 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFlush, XSync, XEventsQueued, XPending \- handle output buffer or event queue
.SH SYNTAX
diff --git a/man/XFocusChangeEvent.man b/man/XFocusChangeEvent.man
index ee35f5fc..7c2ac853 100644
--- a/man/XFocusChangeEvent.man
+++ b/man/XFocusChangeEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFCEvent.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFocusChangeEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFocusChangeEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFocusChangeEvent \- FocusIn and FocusOut event structure
.SH STRUCTURES
diff --git a/man/XFontSetExtents.man b/man/XFontSetExtents.man
index 8237b444..e08ad2d3 100644
--- a/man/XFontSetExtents.man
+++ b/man/XFontSetExtents.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFSExt.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFontSetExtents 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFontSetExtents 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFontSetExtents \- XFontSetExtents structure
.SH STRUCTURES
diff --git a/man/XFontsOfFontSet.man b/man/XFontsOfFontSet.man
index 3ed12222..070ed988 100644
--- a/man/XFontsOfFontSet.man
+++ b/man/XFontsOfFontSet.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFofFSet.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFontsOfFontSet 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFontsOfFontSet 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFontsOfFontSet, XBaseFontNameListOfFontSet, XLocaleOfFontSet, XContextDependentDrawing, XContextualDrawing, XDirectionalDependentDrawing \- obtain fontset information
.SH SYNTAX
diff --git a/man/XFree.man b/man/XFree.man
index 9e76a995..821187f8 100644
--- a/man/XFree.man
+++ b/man/XFree.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XFree.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XFree 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XFree 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XFree \- free client data
.SH SYNTAX
diff --git a/man/XGetVisualInfo.man b/man/XGetVisualInfo.man
index f92825a7..bfc2a745 100644
--- a/man/XGetVisualInfo.man
+++ b/man/XGetVisualInfo.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGetVInfo.man,v 1.3 2001/02/07 22:35:20 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XGetVisualInfo 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGetVisualInfo 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGetVisualInfo, XMatchVisualInfo, XVisualIDFromVisual, XVisualInfo \- obtain visual information and visual structure
.SH SYNTAX
@@ -226,77 +228,77 @@ structure contains:
.TS
lw(.5i) lw(2.5i) lw(.8i).
T{
-#define
+\&#define
T} T{
.ZN VisualNoMask
T} T{
0x0
T}
T{
-#define
+\&#define
T} T{
.ZN VisualIDMask
T} T{
0x1
T}
T{
-#define
+\&#define
T} T{
.ZN VisualScreenMask
T} T{
0x2
T}
T{
-#define
+\&#define
T} T{
.ZN VisualDepthMask
T} T{
0x4
T}
T{
-#define
+\&#define
T} T{
.ZN VisualClassMask
T} T{
0x8
T}
T{
-#define
+\&#define
T} T{
.ZN VisualRedMaskMask
T} T{
0x10
T}
T{
-#define
+\&#define
T} T{
.ZN VisualGreenMaskMask
T} T{
0x20
T}
T{
-#define
+\&#define
T} T{
.ZN VisualBlueMaskMask
T} T{
0x40
T}
T{
-#define
+\&#define
T} T{
.ZN VisualColormapSizeMask
T} T{
0x80
T}
T{
-#define
+\&#define
T} T{
.ZN VisualBitsPerRGBMask
T} T{
0x100
T}
T{
-#define
+\&#define
T} T{
.ZN VisualAllMask
T} T{
diff --git a/man/XGetWindowAttributes.man b/man/XGetWindowAttributes.man
index 10d34caf..498697e6 100644
--- a/man/XGetWindowAttributes.man
+++ b/man/XGetWindowAttributes.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGetWAttr.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,7 +142,7 @@
..
.ny0
'\" t
-.TH XGetWindowAttributes 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGetWindowAttributes 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGetWindowAttributes, XGetGeometry, XWindowAttributes \- get current window attribute or geometry and current window attributes structure
.SH SYNTAX
diff --git a/man/XGetWindowProperty.man b/man/XGetWindowProperty.man
index 1926216e..5c608864 100644
--- a/man/XGetWindowProperty.man
+++ b/man/XGetWindowProperty.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGetWProp.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGetWindowProperty 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGetWindowProperty 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGetWindowProperty, XListProperties, XChangeProperty, XRotateWindowProperties, XDeleteProperty \- obtain and change window properties
.SH SYNTAX
diff --git a/man/XGrabButton.man b/man/XGrabButton.man
index ce1cb120..82d15b11 100644
--- a/man/XGrabButton.man
+++ b/man/XGrabButton.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGrButton.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGrabButton 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGrabButton 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGrabButton, XUngrabButton \- grab pointer buttons
.SH SYNTAX
diff --git a/man/XGrabKey.man b/man/XGrabKey.man
index f9b3f6a5..3ef65422 100644
--- a/man/XGrabKey.man
+++ b/man/XGrabKey.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGrKey.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGrabKey 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGrabKey 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGrabKey, XUngrabKey \- grab keyboard keys
.SH SYNTAX
diff --git a/man/XGrabKeyboard.man b/man/XGrabKeyboard.man
index c7694e92..f359962d 100644
--- a/man/XGrabKeyboard.man
+++ b/man/XGrabKeyboard.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGrKeybrd.man,v 1.2 2001/01/27 18:20:00 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGrabKeyboard 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGrabKeyboard 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGrabKeyboard, XUngrabKeyboard \- grab the keyboard
.SH SYNTAX
diff --git a/man/XGrabPointer.man b/man/XGrabPointer.man
index 4a6e58dd..0b2853fe 100644
--- a/man/XGrabPointer.man
+++ b/man/XGrabPointer.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGrPntr.man,v 1.2 2001/01/27 18:20:00 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGrabPointer 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGrabPointer 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGrabPointer, XUngrabPointer, XChangeActivePointerGrab \- grab the pointer
.SH SYNTAX
diff --git a/man/XGrabServer.man b/man/XGrabServer.man
index b75b4c7a..c93db208 100644
--- a/man/XGrabServer.man
+++ b/man/XGrabServer.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGrServer.man,v 1.2 2001/01/27 18:20:00 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGrabServer 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGrabServer 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGrabServer, XUngrabServer \- grab the server
.SH SYNTAX
diff --git a/man/XGraphicsExposeEvent.man b/man/XGraphicsExposeEvent.man
index f5399303..085d6d43 100644
--- a/man/XGraphicsExposeEvent.man
+++ b/man/XGraphicsExposeEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGEEvent.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGraphicsExposeEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGraphicsExposeEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGraphicsExposeEvent, XNoExposeEvent \- GraphicsExpose and NoExpose event structures
.SH STRUCTURES
diff --git a/man/XGravityEvent.man b/man/XGravityEvent.man
index b4d4f56b..2095aed4 100644
--- a/man/XGravityEvent.man
+++ b/man/XGravityEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGEvent.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XGravityEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XGravityEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XGravityEvent \- GravityNotify event structure
.SH STRUCTURES
diff --git a/man/XIconifyWindow.man b/man/XIconifyWindow.man
index fff3572b..27e82f74 100644
--- a/man/XIconifyWindow.man
+++ b/man/XIconifyWindow.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XIcWin.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XIconifyWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XIconifyWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XIconifyWindow, XWithdrawWindow, XReconfigureWMWindow \- manipulate top-level windows
.SH SYNTAX
@@ -158,7 +160,7 @@ Status XWithdrawWindow\^(\^\fIdisplay\fP, \fIw\fP, \fIscreen_number\fP\^)
.br
int \fIscreen_number\fP\^;
.LP
-Status XReconfigureWMWindow\^(\^\fIdisplay\fP, \fIw\fP, \fIscreen_number\fP, \
+Status XReconfigureWMWindow\^(\^\fIdisplay\fP, \fIw\fP, \fIscreen_number\fP,
\fIvalue_mask\fP, \fIvalues\fP\^)
.br
Display *\fIdisplay\fP\^;
diff --git a/man/XIfEvent.man b/man/XIfEvent.man
index a55399e4..ef9eb219 100644
--- a/man/XIfEvent.man
+++ b/man/XIfEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XIfEvent.man,v 1.2 2001/01/27 18:20:00 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XIfEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XIfEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XIfEvent, XCheckIfEvent, XPeekIfEvent \- check the event queue with a predicate procedure
.SH SYNTAX
diff --git a/man/XInitImage.man b/man/XInitImage.man
index 0f15b6ef..7b021f73 100644
--- a/man/XInitImage.man
+++ b/man/XInitImage.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XCreImage.man,v 1.2 2001/01/27 18:19:57 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XCreateImage 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XCreateImage 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XInitImage, XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel, XDestroyImage \- image utilities
.SH SYNTAX
diff --git a/man/XInitThreads.man b/man/XInitThreads.man
index 1812f640..241d275c 100644
--- a/man/XInitThreads.man
+++ b/man/XInitThreads.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XThreads.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XInitThreads 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XInitThreads 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XInitThreads, XLockDisplay, XUnlockDisplay \- multi-threading support
.SH SYNTAX
diff --git a/man/XInstallColormap.man b/man/XInstallColormap.man
index b6337037..793576d6 100644
--- a/man/XInstallColormap.man
+++ b/man/XInstallColormap.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XInstCmap.man,v 1.3 2001/07/23 20:47:17 paulo Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XInstallColormap 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XInstallColormap 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XInstallColormap, XUninstallColormap, XListInstalledColormaps \- control colormaps
.SH SYNTAX
@@ -248,7 +250,7 @@ A value for a Colormap argument does not name a defined Colormap.
.ZN BadWindow
A value for a Window argument does not name a defined Window.
.SH "SEE ALSO"
-XChangeWindowAtrributes(3X11),
+XChangeWindowAttributes(3X11),
XCreateColormap(3X11),
XCreateWindow(3X11),
XFree(3X11)
diff --git a/man/XInternAtom.man b/man/XInternAtom.man
index 90036ef3..fa16f5d6 100644
--- a/man/XInternAtom.man
+++ b/man/XInternAtom.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XInternA.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XInternAtom 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XInternAtom 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XInternAtom, XInternAtoms, XGetAtomName, XGetAtomNames \- create or return atom names
.SH SYNTAX
diff --git a/man/XIntersectRegion.man b/man/XIntersectRegion.man
index 42c2d775..6a0ee0da 100644
--- a/man/XIntersectRegion.man
+++ b/man/XIntersectRegion.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XInterReg.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XIntersectRegion 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XIntersectRegion 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XIntersectRegion, XUnionRegion, XUnionRectWithRegion, XSubtractRegion, XXorRegion, XOffsetRegion, XShrinkRegion \- region arithmetic
.SH SYNTAX
@@ -150,7 +152,7 @@ XUnionRegion\^(\^\fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^)
.br
Region \fIsra\fP\^, \fIsrb\fP\^, \fIdr_return\fP\^;
.LP
-XUnionRectWithRegion\^(\^\fIrectangle\fP, \fIsrc_region\fP, \
+XUnionRectWithRegion\^(\^\fIrectangle\fP, \fIsrc_region\fP,
\fIdest_region_return\fP\^)
.br
XRectangle *\fIrectangle\fP\^;
diff --git a/man/XKeymapEvent.man b/man/XKeymapEvent.man
index 896b5009..01c75ae4 100644
--- a/man/XKeymapEvent.man
+++ b/man/XKeymapEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XKMapEven.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XKeymapEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XKeymapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XKeymapEvent \- KeymapNotify event structure
.SH STRUCTURES
diff --git a/man/XListFonts.man b/man/XListFonts.man
index 5e4c3c93..07d1073f 100644
--- a/man/XListFonts.man
+++ b/man/XListFonts.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XListFont.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XListFonts 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XListFonts 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XListFonts, XFreeFontNames, XListFontsWithInfo, XFreeFontInfo \- obtain or free font names and information
.SH SYNTAX
diff --git a/man/XLoadFont.man b/man/XLoadFont.man
index b9f96d3a..571549c4 100644
--- a/man/XLoadFont.man
+++ b/man/XLoadFont.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XLoadFont.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XLoadFont 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XLoadFont 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XLoadFont, XQueryFont, XLoadQueryFont, XFreeFont, XGetFontProperty, XUnloadFont, XCharStruct, XFontProp, XChar2b, XFontStruct \- load or unload fonts and font metric structures
.SH SYNTAX
diff --git a/man/XLookupKeysym.man b/man/XLookupKeysym.man
index d07dfcbb..434d6c94 100644
--- a/man/XLookupKeysym.man
+++ b/man/XLookupKeysym.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XLookKsym.man,v 1.4 2003/02/15 17:48:39 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,9 +140,9 @@
.el .sp 10p
..
.ny0
-.TH XLookupKeysym 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XLookupKeysym 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XLookupKeysym, XRefreshKeyboardMapping, XLookupString, XRebindKeySym \- handle keyboard input events in Latin-1
+XLookupKeysym, XRefreshKeyboardMapping, XLookupString, XRebindKeysym \- handle keyboard input events in Latin-1
.SH SYNTAX
KeySym XLookupKeysym(\^\fIkey_event\fP, \fIindex\fP\^)
.br
@@ -152,7 +154,7 @@ XRefreshKeyboardMapping(\^\fIevent_map\fP\^)
.br
XMappingEvent *\fIevent_map\fP\^;
.LP
-int XLookupString(\^\fIevent_struct\fP, \fIbuffer_return\fP,\
+int XLookupString(\^\fIevent_struct\fP, \fIbuffer_return\fP,
\fIbytes_buffer\fP, \fIkeysym_return\fP, \fIstatus_in_out\fP\^)
.br
XKeyEvent *\fIevent_struct\fP\^;
diff --git a/man/XMapEvent.man b/man/XMapEvent.man
index 79d43cce..6f89c17d 100644
--- a/man/XMapEvent.man
+++ b/man/XMapEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XMEvent.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XMapEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XMapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XMapEvent, XMappingEvent \- MapNotify and MappingNotify event structures
.SH STRUCTURES
diff --git a/man/XMapRequestEvent.man b/man/XMapRequestEvent.man
index d593d2b9..90b4ffb0 100644
--- a/man/XMapRequestEvent.man
+++ b/man/XMapRequestEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XMREvent.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XMapRequestEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XMapRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XMapRequestEvent \- MapRequest event structure
.SH STRUCTURES
diff --git a/man/XMapWindow.man b/man/XMapWindow.man
index f7678e0b..164ab663 100644
--- a/man/XMapWindow.man
+++ b/man/XMapWindow.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XMapWin.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XMapWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XMapWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XMapWindow, XMapRaised, XMapSubwindows \- map windows
.SH SYNTAX
diff --git a/man/XNextEvent.man b/man/XNextEvent.man
index 9b4f5a74..62114689 100644
--- a/man/XNextEvent.man
+++ b/man/XNextEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XNEvent.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XNextEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XNextEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XNextEvent, XPeekEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent \- select events by type
.SH SYNTAX
diff --git a/man/XNoOp.man b/man/XNoOp.man
index 3e03378c..c0013661 100644
--- a/man/XNoOp.man
+++ b/man/XNoOp.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XNoOp.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XNoOp 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XNoOp 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XNoOp \- No Operation
.SH SYNTAX
diff --git a/man/XOpenDisplay.man b/man/XOpenDisplay.man
index 077c6b35..3be2113d 100644
--- a/man/XOpenDisplay.man
+++ b/man/XOpenDisplay.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XOpDsply.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XOpenDisplay 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XOpenDisplay 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XOpenDisplay, XCloseDisplay \- connect or disconnect to X server
.SH SYNTAX
diff --git a/man/XOpenIM.man b/man/XOpenIM.man
index 8c30aea7..ae1274eb 100644
--- a/man/XOpenIM.man
+++ b/man/XOpenIM.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XOpenIM.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XOpenIM 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XOpenIM 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XOpenIM, XCloseIM, XSetIMValues, XGetIMValues, XDisplayOfIM, XLocaleOfIM, XRegisterIMInstantiateCallback, XUnregisterIMInstantiateCallback \- open, close, and otain input method information
.SH SYNTAX
diff --git a/man/XOpenOM.man b/man/XOpenOM.man
index a2668a5a..6a45ad33 100644
--- a/man/XOpenOM.man
+++ b/man/XOpenOM.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,7 +40,9 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
-.\"
+.\"
+.\" $XFree86: xc/doc/man/X11/XOpenOM.man,v 1.4 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +141,7 @@
.el .sp 10p
..
.ny0
-.TH XOpenOM 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XOpenOM 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XOpenOM, XCloseOM, XSetOMValues, XGetOMValues, XDisplayOfOM, XLocaleOfOM \- open output methods
.SH SYNTAX
@@ -241,7 +244,11 @@ function presents a variable argument list programming interface
for setting properties or features of the specified output method.
This function returns NULL if it succeeds;
otherwise,
-it returns the name of the first argument that could not be obtained.
+it returns the name of the first argument that could not be set.
+Xlib does not attempt to set arguments from the supplied list that
+follow the failed argument;
+all arguments in the list preceding the failed argument have been set
+correctly.
.LP
No standard arguments are currently defined by Xlib.
.LP
diff --git a/man/XParseGeometry.man b/man/XParseGeometry.man
index dd9e7115..ae82e75f 100644
--- a/man/XParseGeometry.man
+++ b/man/XParseGeometry.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XParGeom.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XParseGeometry 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XParseGeometry 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XParseGeometry, XWMGeometry \- parse window geometry
.SH SYNTAX
@@ -150,7 +152,7 @@ int XParseGeometry\^(\^\fIparsestring\fP\^, \fIx_return\fP\^, \fIy_return\fP\^,
.br
unsigned int *\fIwidth_return\fP\^, *\fIheight_return\fP\^;
.LP
-int XWMGeometry\^(\^\fIdisplay\fP, \fIscreen\fP, \fIuser_geom\fP, \
+int XWMGeometry\^(\^\fIdisplay\fP, \fIscreen\fP, \fIuser_geom\fP,
\fIdef_geom\fP, \fIbwidth\fP, \fIhints\fP, \fIx_return\fP, \fIy_return\fP,
.br
\fIwidth_return\fP, \fIheight_return\fP, \fIgravity_return\fP\^)
diff --git a/man/XPolygonRegion.man b/man/XPolygonRegion.man
index 2b7cb976..994513dc 100644
--- a/man/XPolygonRegion.man
+++ b/man/XPolygonRegion.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XPolyReg.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XPolygonRegion 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XPolygonRegion 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XPolygonRegion, XClipBox \- generate regions
.SH SYNTAX
diff --git a/man/XPropertyEvent.man b/man/XPropertyEvent.man
index 5d290325..214cd0c9 100644
--- a/man/XPropertyEvent.man
+++ b/man/XPropertyEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XPEvent.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XPropertyEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XPropertyEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XPropertyEvent \- PropertyNotify event structure
.SH STRUCTURES
diff --git a/man/XPutBackEvent.man b/man/XPutBackEvent.man
index 262113c5..d2a337e7 100644
--- a/man/XPutBackEvent.man
+++ b/man/XPutBackEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XPutBEvnt.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XPutBackEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XPutBackEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XPutBackEvent \- put events back on the queue
.SH SYNTAX
diff --git a/man/XPutImage.man b/man/XPutImage.man
index 1e2a7936..c49445c7 100644
--- a/man/XPutImage.man
+++ b/man/XPutImage.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XPutImage.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XPutImage 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XPutImage 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XPutImage, XGetImage, XGetSubImage \- transfer images
.SH SYNTAX
@@ -196,10 +198,10 @@ XImage *XGetSubImage\^(\^\fIdisplay\fP, \fId\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidt
Specifies the drawable.
.IP \fIdest_image\fP 1i
Specifies the destination image.
-.ds Dx , which are relative to the origin of the drawable \
-and are the coordinates of the subimage \
-or which are relative to the origin of the destination rectangle, \
-specify its upper-left corner, and determine where the subimage \
+.ds Dx , which are relative to the origin of the drawable
+and are the coordinates of the subimage
+or which are relative to the origin of the destination rectangle,
+specify its upper-left corner, and determine where the subimage
is placed in the destination image
.IP \fIdest_x\fP 1i
.br
@@ -237,7 +239,7 @@ structure.
.ns
.IP \fIheight\fP 1i
Specify the width and height\*(Wh.
-.ds Xy , which are relative to the origin of the drawable \
+.ds Xy , which are relative to the origin of the drawable
and define the upper-left corner of the rectangle
.IP \fIx\fP 1i
.br
diff --git a/man/XQueryBestSize.man b/man/XQueryBestSize.man
index 6bd0156d..cbb02aa0 100644
--- a/man/XQueryBestSize.man
+++ b/man/XQueryBestSize.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XQBSize.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XQueryBestSize 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XQueryBestSize 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XQueryBestSize, XQueryBestTile, XQueryBestStipple \- determine efficient sizes
.SH SYNTAX
diff --git a/man/XQueryColor.man b/man/XQueryColor.man
index ae0cb0e9..cac6b054 100644
--- a/man/XQueryColor.man
+++ b/man/XQueryColor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XQColor.man,v 1.4 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XQueryColor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XQueryColor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XQueryColor, XQueryColors, XLookupColor, XParseColor \- obtain color values
.SH SYNTAX
@@ -160,7 +162,7 @@ XQueryColors\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIdefs_in_out\fP\^, \fIncolor
.br
int \fIncolors\fP\^;
.LP
-Status XLookupColor\^(\^\fIdisplay\fP, \fIcolormap\fP, \fIcolor_name\fP, \
+Status XLookupColor\^(\^\fIdisplay\fP, \fIcolormap\fP, \fIcolor_name\fP,
\fIexact_def_return\fP\^, \fIscreen_def_return\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -303,10 +305,10 @@ a numeric specification, in one of the following formats:
.Ds 0
.TA 2i
.ta 2i
-#RGB (4 bits each)
-#RRGGBB (8 bits each)
-#RRRGGGBBB (12 bits each)
-#RRRRGGGGBBBB (16 bits each)
+\&#RGB (4 bits each)
+\&#RRGGBB (8 bits each)
+\&#RRRGGGBBB (12 bits each)
+\&#RRRRGGGGBBBB (16 bits each)
.De
.\" End marker code here
.LP
diff --git a/man/XQueryPointer.man b/man/XQueryPointer.man
index 01ef3715..1bae0815 100644
--- a/man/XQueryPointer.man
+++ b/man/XQueryPointer.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XQPointer.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XQueryPointer 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XQueryPointer 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XQueryPointer \- get pointer coordinates
.SH SYNTAX
diff --git a/man/XQueryTree.man b/man/XQueryTree.man
index 3f1b65e8..13b52cb6 100644
--- a/man/XQueryTree.man
+++ b/man/XQueryTree.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XQTree.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XQueryTree 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XQueryTree 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XQueryTree \- query window tree information
.SH SYNTAX
@@ -166,7 +168,7 @@ Returns the number of children.
Returns the parent window.
.IP \fIroot_return\fP 1i
Returns the root window.
-.ds Wi whose list of children, root, parent, and number of children \
+.ds Wi whose list of children, root, parent, and number of children
you want to obtain
.IP \fIw\fP 1i
Specifies the window \*(Wi.
diff --git a/man/XRaiseWindow.man b/man/XRaiseWindow.man
index fea5e6bc..c31c0c21 100644
--- a/man/XRaiseWindow.man
+++ b/man/XRaiseWindow.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XRaiseWin.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XRaiseWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XRaiseWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XRaiseWindow, XLowerWindow, XCirculateSubwindows, XCirculateSubwindowsUp, XCirculateSubwindowsDown, XRestackWindows \- change window stacking order
.SH SYNTAX
diff --git a/man/XReadBitmapFile.man b/man/XReadBitmapFile.man
index 4c384e0a..ade48a58 100644
--- a/man/XReadBitmapFile.man
+++ b/man/XReadBitmapFile.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XReadBF.man,v 1.3 2001/02/07 22:35:20 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XReadBitmapFile 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XReadBitmapFile 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XReadBitmapFile, XReadBitmapFileData, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData \- manipulate bitmaps
.SH SYNTAX
@@ -357,7 +359,7 @@ a bitmap file that was written out by
The following example creates a gray bitmap:
.LP
.Ds 0
-#include "gray.bitmap"
+\&#include "gray.bitmap"
.sp 6p
Pixmap bitmap;
bitmap = XCreateBitmapFromData(display, window, gray_bits, gray_width, gray_height);
diff --git a/man/XRecolorCursor.man b/man/XRecolorCursor.man
index 801777f2..ad8a8f15 100644
--- a/man/XRecolorCursor.man
+++ b/man/XRecolorCursor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XRecCur.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XRecolorCursor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XRecolorCursor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XRecolorCursor, XFreeCursor, XQueryBestCursor \- manipulate cursors
.SH SYNTAX
diff --git a/man/XReparentEvent.man b/man/XReparentEvent.man
index 7eb9a111..5cc986cc 100644
--- a/man/XReparentEvent.man
+++ b/man/XReparentEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XREvent.man,v 1.2 2001/01/27 18:20:02 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XReparentEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XReparentEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XReparentEvent \- ReparentNotify event structure
.SH STRUCTURES
diff --git a/man/XReparentWindow.man b/man/XReparentWindow.man
index 6685c4f4..730c8c8e 100644
--- a/man/XReparentWindow.man
+++ b/man/XReparentWindow.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XReparWin.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XReparentWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XReparentWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XReparentWindow \- reparent windows
.SH SYNTAX
diff --git a/man/XResizeRequestEvent.man b/man/XResizeRequestEvent.man
index 080e85d9..00d45f36 100644
--- a/man/XResizeRequestEvent.man
+++ b/man/XResizeRequestEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XRREvent.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XResizeRequestEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XResizeRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XResizeRequestEvent \- ResizeRequest event structure
.SH STRUCTURES
diff --git a/man/XResourceManagerString.man b/man/XResourceManagerString.man
index 566d59d8..27340c7b 100644
--- a/man/XResourceManagerString.man
+++ b/man/XResourceManagerString.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XRMStr.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XResourceManagerString 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XResourceManagerString 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XResourceManagerString, XScreenResourceString \- obtain server resource properties
.SH SYNTAX
diff --git a/man/XSaveContext.man b/man/XSaveContext.man
index 428479c5..1972a22a 100644
--- a/man/XSaveContext.man
+++ b/man/XSaveContext.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSContext.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSaveContext 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSaveContext 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSaveContext, XFindContext, XDeleteContext, XUniqueContext \- associative look-up routines
.SH SYNTAX
diff --git a/man/XSelectInput.man b/man/XSelectInput.man
index 42b9ed81..b0b2fb50 100644
--- a/man/XSelectInput.man
+++ b/man/XSelectInput.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSInput.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSelectInput 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSelectInput 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSelectInput \- select input events
.SH SYNTAX
diff --git a/man/XSelectionClearEvent.man b/man/XSelectionClearEvent.man
index 4313f17c..6c553450 100644
--- a/man/XSelectionClearEvent.man
+++ b/man/XSelectionClearEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSCEvent.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSelectionClearEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSelectionClearEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSelectionClearEvent \- SelectionClear event structure
.SH STRUCTURES
diff --git a/man/XSelectionEvent.man b/man/XSelectionEvent.man
index 0df21cbb..f38648fa 100644
--- a/man/XSelectionEvent.man
+++ b/man/XSelectionEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSEvent.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSelectionEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSelectionEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSelectionEvent \- SelectionNotify event structure
.SH STRUCTURES
diff --git a/man/XSelectionRequestEvent.man b/man/XSelectionRequestEvent.man
index 2b28167f..e9cbb45a 100644
--- a/man/XSelectionRequestEvent.man
+++ b/man/XSelectionRequestEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSREvent.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSelectionRequestEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSelectionRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSelectionRequestEvent \- SelectionRequest event structure
.SH STRUCTURES
diff --git a/man/XSendEvent.man b/man/XSendEvent.man
index 59fcd4cd..f1dcc611 100644
--- a/man/XSendEvent.man
+++ b/man/XSendEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeEvent.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSendEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSendEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents, XTimeCoord \- send events and pointer motion history structure
.SH SYNTAX
@@ -187,8 +189,8 @@ history buffer.
You can pass a timestamp or
.ZN CurrentTime .
.ds Wi the window the event is to be sent to,
-.ZN PointerWindow , \
-or \
+.ZN PointerWindow ,
+or
.ZN InputFocus .
.IP \fIw\fP 1i
Specifies the window \*(Wi.
diff --git a/man/XSetArcMode.man b/man/XSetArcMode.man
index 4c0346ab..808f6694 100644
--- a/man/XSetArcMode.man
+++ b/man/XSetArcMode.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeArcMod.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetArcMode 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetArcMode 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetArcMode, XSetSubwindowMode, XSetGraphicsExposure \- GC convenience routines
.SH SYNTAX
diff --git a/man/XSetClipOrigin.man b/man/XSetClipOrigin.man
index 7c1ad162..1cbfc56a 100644
--- a/man/XSetClipOrigin.man
+++ b/man/XSetClipOrigin.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeClipO.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetClipOrigin 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetClipOrigin 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetClipOrigin, XSetClipMask, XSetClipRectangles \- GC convenience routines
.SH SYNTAX
diff --git a/man/XSetCloseDownMode.man b/man/XSetCloseDownMode.man
index 0b55b317..7d1a5106 100644
--- a/man/XSetCloseDownMode.man
+++ b/man/XSetCloseDownMode.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeClosDM.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetCloseDownMode 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetCloseDownMode 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetCloseDownMode, XKillClient \- control clients
.SH SYNTAX
diff --git a/man/XSetCommand.man b/man/XSetCommand.man
index fc877be4..f9cd97be 100644
--- a/man/XSetCommand.man
+++ b/man/XSetCommand.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeCmd.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetCommand 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetCommand 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetCommand, XGetCommand \- set or read a window's WM_COMMAND property
.SH SYNTAX
@@ -152,7 +154,7 @@ XSetCommand\^(\^\fIdisplay\fP, \fIw\fP, \fIargv\fP, \fIargc\fP\^)
.br
int \fIargc\fP\^;
.LP
-Status XGetCommand\^(\^\fIdisplay\fP, \fIw\fP, \fIargv_return\fP, \
+Status XGetCommand\^(\^\fIdisplay\fP, \fIw\fP, \fIargv_return\fP,
\fIargc_return\fP\^)
.br
Display *\fIdisplay\fP\^;
diff --git a/man/XSetErrorHandler.man b/man/XSetErrorHandler.man
index 5bc98e6e..a752eabc 100644
--- a/man/XSetErrorHandler.man
+++ b/man/XSetErrorHandler.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeErrHan.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetErrorHandler 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetErrorHandler 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetErrorHandler, XGetErrorText, XDisplayName, XSetIOErrorHandler, XGetErrorDatabaseText \- default error handlers
.SH SYNTAX
diff --git a/man/XSetFillStyle.man b/man/XSetFillStyle.man
index b2604862..2f121986 100644
--- a/man/XSetFillStyle.man
+++ b/man/XSetFillStyle.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeFillS.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetFillStyle 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetFillStyle 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetFillStyle, XSetFillRule \- GC convenience routines
.SH SYNTAX
diff --git a/man/XSetFont.man b/man/XSetFont.man
index f2a9eff4..41e0c34f 100644
--- a/man/XSetFont.man
+++ b/man/XSetFont.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeFont.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetFont 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetFont 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetFont \- GC convenience routines
.SH SYNTAX
diff --git a/man/XSetFontPath.man b/man/XSetFontPath.man
index 4aa0a7e1..c8ff4097 100644
--- a/man/XSetFontPath.man
+++ b/man/XSetFontPath.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeFontP.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetFontPath 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetFontPath 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetFontPath, XGetFontPath, XFreeFontPath \- set, get, or free the font search path
.SH SYNTAX
diff --git a/man/XSetICFocus.man b/man/XSetICFocus.man
index ccc38e1a..b68d0e8e 100644
--- a/man/XSetICFocus.man
+++ b/man/XSetICFocus.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSICFoc.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetICFocus 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetICFocus 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetICFocus, XUnsetICFocus \- set and unset input context focus
.SH SYNTAX
diff --git a/man/XSetICValues.man b/man/XSetICValues.man
index 1b7b2d50..3cc14416 100644
--- a/man/XSetICValues.man
+++ b/man/XSetICValues.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSICVals.man,v 1.2 2001/01/27 18:20:03 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetICValues 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetICValues 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetICValues, XGetICValues \- set and obtain XIC values
.SH SYNTAX
diff --git a/man/XSetInputFocus.man b/man/XSetInputFocus.man
index eef487fb..9fc671ba 100644
--- a/man/XSetInputFocus.man
+++ b/man/XSetInputFocus.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeInFoc.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetInputFocus 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetInputFocus 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetInputFocus, XGetInputFocus \- control input focus
.SH SYNTAX
diff --git a/man/XSetLineAttributes.man b/man/XSetLineAttributes.man
index b7c33aa2..cf2d0b7b 100644
--- a/man/XSetLineAttributes.man
+++ b/man/XSetLineAttributes.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeLAttr.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetLineAttributes 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetLineAttributes 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetLineAttributes, XSetDashes \- GC convenience routines
.SH SYNTAX
diff --git a/man/XSetPointerMapping.man b/man/XSetPointerMapping.man
index 265809ae..b8308feb 100644
--- a/man/XSetPointerMapping.man
+++ b/man/XSetPointerMapping.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSePMap.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetPointerMapping 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetPointerMapping 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetPointerMapping, XGetPointerMapping \- manipulate pointer settings
.SH SYNTAX
diff --git a/man/XSetScreenSaver.man b/man/XSetScreenSaver.man
index e4a33141..e68a5d9f 100644
--- a/man/XSetScreenSaver.man
+++ b/man/XSetScreenSaver.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeScSav.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetScreenSaver 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetScreenSaver 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver \- manipulate the screen saver
.SH SYNTAX
diff --git a/man/XSetSelectionOwner.man b/man/XSetSelectionOwner.man
index 2adf20b2..255b8240 100644
--- a/man/XSetSelectionOwner.man
+++ b/man/XSetSelectionOwner.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeSelOwn.man,v 1.2 2001/01/27 18:20:04 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetSelectionOwner 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetSelectionOwner 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetSelectionOwner, XGetSelectionOwner, XConvertSelection \- manipulate window selection
.SH SYNTAX
diff --git a/man/XSetState.man b/man/XSetState.man
index 83457fd8..b8dd4d2a 100644
--- a/man/XSetState.man
+++ b/man/XSetState.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeState.man,v 1.3 2001/12/17 03:04:40 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,9 +140,9 @@
.el .sp 10p
..
.ny0
-.TH XSetState 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetState 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XSetState, XSetFunction, XSetPlanemask, XSetForeground, XSetBackground \- GC convenience routines
+XSetState, XSetFunction, XSetPlaneMask, XSetForeground, XSetBackground \- GC convenience routines
.SH SYNTAX
XSetState\^(\^\fIdisplay\fP, \fIgc\fP\^, \fIforeground\fP\^, \fIbackground\fP\^, \fIfunction\fP\^, \fIplane_mask\fP\^)
.br
diff --git a/man/XSetTextProperty.man b/man/XSetTextProperty.man
index 45a0fe3f..924b047b 100644
--- a/man/XSetTextProperty.man
+++ b/man/XSetTextProperty.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeTProp.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,11 +140,11 @@
.el .sp 10p
..
.ny0
-.TH XSetTextProperty 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetTextProperty 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetTextProperty, XGetTextProperty \- set and read text properties
.SH SYNTAX
-void XSetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP, \
+void XSetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP,
\fIproperty\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -153,7 +155,7 @@ void XSetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop\fP, \
.br
Atom \fIproperty\fP\^;
.LP
-Status XGetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop_return\fP, \
+Status XGetTextProperty\^(\^\fIdisplay\fP, \fIw\fP, \fItext_prop_return\fP,
\fIproperty\fP\^)
.br
Display *\fIdisplay\fP\^;
diff --git a/man/XSetTile.man b/man/XSetTile.man
index cce3789d..f1d413f4 100644
--- a/man/XSetTile.man
+++ b/man/XSetTile.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeTile.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetTile 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetTile 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetTile, XSetStipple, XSetTSOrigin \- GC convenience routines
.SH SYNTAX
diff --git a/man/XSetTransientForHint.man b/man/XSetTransientForHint.man
index 2c229e4f..83eff925 100644
--- a/man/XSetTransientForHint.man
+++ b/man/XSetTransientForHint.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeTFHint.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetTransientForHint 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetTransientForHint 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetTransientForHint, XGetTransientForHint \- set or read a window's WM_TRANSIENT_FOR property
.SH SYNTAX
diff --git a/man/XSetWMClientMachine.man b/man/XSetWMClientMachine.man
index 7851abbc..75563184 100644
--- a/man/XSetWMClientMachine.man
+++ b/man/XSetWMClientMachine.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeWMCMac.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetWMClientMachine 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetWMClientMachine 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetWMClientMachine, XGetWMClientMachine \- set or read a window's WM_CLIENT_MACHINE property
.SH SYNTAX
diff --git a/man/XSetWMColormapWindows.man b/man/XSetWMColormapWindows.man
index 5dd1b5e2..0386b052 100644
--- a/man/XSetWMColormapWindows.man
+++ b/man/XSetWMColormapWindows.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeWMCWin.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,11 +140,11 @@
.el .sp 10p
..
.ny0
-.TH XSetWMColormapWindows 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetWMColormapWindows 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetWMColormapWindows, XGetWMColormapWindows \- set or read a window's WM_COLORMAP_WINDOWS property
.SH SYNTAX
-Status XSetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP, \
+Status XSetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP,
\fIcolormap_windows\fP, \fIcount\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -153,7 +155,7 @@ Status XSetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP, \
.br
int \fIcount\fP\^;
.LP
-Status XGetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP, \
+Status XGetWMColormapWindows\^(\^\fIdisplay\fP, \fIw\fP,
\fIcolormap_windows_return\fP, \fIcount_return\fP\^)
.br
Display *\fIdisplay\fP\^;
diff --git a/man/XSetWMIconName.man b/man/XSetWMIconName.man
index 22a5276f..e91dc0b2 100644
--- a/man/XSetWMIconName.man
+++ b/man/XSetWMIconName.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeWMINam.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetWMIconName 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetWMIconName 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetWMIconName, XGetWMIconName, XSetIconName, XGetIconName \- set or read a window's WM_ICON_NAME property
.SH SYNTAX
diff --git a/man/XSetWMName.man b/man/XSetWMName.man
index e076d520..1d81344e 100644
--- a/man/XSetWMName.man
+++ b/man/XSetWMName.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeWMName.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSetWMName 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetWMName 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetWMName, XGetWMName, XStoreName, XFetchName \- set or read a window's WM_NAME property
.SH SYNTAX
diff --git a/man/XSetWMProperties.man b/man/XSetWMProperties.man
index 84b109ff..1e18da7a 100644
--- a/man/XSetWMProperties.man
+++ b/man/XSetWMProperties.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XSeWMProp.man,v 1.4 2001/02/09 03:47:46 tsi Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,12 +141,12 @@
.el .sp 10p
..
.ny0
-.TH XSetWMProperties 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetWMProperties 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XSetWMProperties, XmbSetWMProperties \- set standard window properties
+XSetWMProperties, XmbSetWMProperties, Xutf8SetWMProperties \- set standard window properties
.SH SYNTAX
-void XSetWMProperties\^(\^\fIdisplay\fP, \fIw\fP, \fIwindow_name\fP, \
-\fIicon_name\fP, \fIargv\fP, \fIargc\fP, \fInormal_hints\fP, \fIwm_hints\fP, \
+void XSetWMProperties\^(\^\fIdisplay\fP, \fIw\fP, \fIwindow_name\fP,
+\fIicon_name\fP, \fIargv\fP, \fIargc\fP, \fInormal_hints\fP, \fIwm_hints\fP,
\fIclass_hints\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -185,6 +188,28 @@ void XmbSetWMProperties\^(\^\fIdisplay\fP\^, \fIw\fP\^, \fIwindow_name\fP\^, \fI
XWMHints *\fIwm_hints\fP\^;
.br
XClassHint *\fIclass_hints\fP\^;
+.LP
+void Xutf8SetWMProperties\^(\^\fIdisplay\fP\^, \fIw\fP\^, \fIwindow_name\fP\^, \fIicon_name\fP\^, \fIargv\fP\^, \fIargc\fP\^,
+.br
+ \fInormal_hints\fP\^, \fIwm_hints\fP\^, \fIclass_hints\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Window \fIw\fP\^;
+.br
+ char *\fIwindow_name\fP\^;
+.br
+ char *\fIicon_name\fP\^;
+.br
+ char *\fIargv\fP\^[];
+.br
+ int \fIargc\fP\^;
+.br
+ XSizeHints *\fInormal_hints\fP\^;
+.br
+ XWMHints *\fIwm_hints\fP\^;
+.br
+ XClassHint *\fIclass_hints\fP\^;
.SH ARGUMENTS
.IP \fIargc\fP 1i
Specifies the number of arguments.
@@ -267,19 +292,22 @@ any directory prefixes, is substituted for res_name.
.LP
The
.ZN XmbSetWMProperties
-convenience function provides a simple programming interface
+and
+.ZN Xutf8SetWMProperties
+convenience functions provide a simple programming interface
for setting those essential window properties that are used
for communicating with other clients
(particularly window and session managers).
.LP
If the window_name argument is non-NULL,
-.ZN XmbSetWMProperties
-sets the WM_NAME property.
+they set the WM_NAME property.
If the icon_name argument is non-NULL,
+they set the WM_ICON_NAME property.
+The window_name and icon_name arguments are null-terminated strings, for
.ZN XmbSetWMProperties
-sets the WM_ICON_NAME property.
-The window_name and icon_name arguments are null-terminated strings
-in the encoding of the current locale.
+in the encoding of the current locale, for
+.ZN Xutf8SetWMProperties
+in UTF-8 encoding.
If the arguments can be fully converted to the STRING encoding,
the properties are created with type ``STRING'';
otherwise, the arguments are converted to Compound Text,
@@ -287,18 +315,24 @@ and the properties are created with type ``COMPOUND_TEXT''.
.LP
If the normal_hints argument is non-NULL,
.ZN XmbSetWMProperties
-calls
+and
+.ZN Xutf8SetWMProperties
+call
.ZN XSetWMNormalHints ,
which sets the WM_NORMAL_HINTS property (see section 14.1.7).
If the wm_hints argument is non-NULL,
.ZN XmbSetWMProperties
-calls
+and
+.ZN Xutf8SetWMProperties
+call
.ZN XSetWMHints ,
which sets the WM_HINTS property (see section 14.1.6).
.LP
If the argv argument is non-NULL,
.ZN XmbSetWMProperties
-sets the WM_COMMAND property from argv and argc.
+and
+.ZN Xutf8SetWMProperties
+set the WM_COMMAND property from argv and argc.
An argc of zero indicates a zero-length command.
.LP
The hostname of the machine is stored using
@@ -307,7 +341,9 @@ The hostname of the machine is stored using
.LP
If the class_hints argument is non-NULL,
.ZN XmbSetWMProperties
-sets the WM_CLASS property.
+and
+.ZN Xutf8SetWMProperties
+set the WM_CLASS property.
If the res_name member in the
.ZN XClassHint
structure is set to the NULL pointer and the RESOURCE_NAME
@@ -320,26 +356,35 @@ is substituted for res_name.
.LP
It is assumed that the supplied class_hints.res_name and argv,
the RESOURCE_NAME environment variable, and the hostname of the machine
-are in the encoding of the locale announced for the LC_CTYPE category
-(on POSIX-compliant systems, the LC_CTYPE, else LANG environment variable).
+are in the encoding of the current locale.
The corresponding WM_CLASS, WM_COMMAND, and WM_CLIENT_MACHINE properties
are typed according to the local host locale announcer.
-No encoding conversion is performed prior to storage in the properties.
+No encoding conversion is performed for these strings prior to storage
+in the properties.
.LP
For clients that need to process the property text in a locale,
.ZN XmbSetWMProperties
-sets the WM_LOCALE_NAME property to be the name of the current locale.
+and
+.ZN Xutf8SetWMProperties
+set the WM_LOCALE_NAME property to be the name of the current locale.
The name is assumed to be in the Host Portable Character Encoding
and is converted to STRING for storage in the property.
.LP
-.ZN XSetWMProperties
-and
+.ZN XSetWMProperties ,
.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
can generate
.ZN BadAlloc
and
.ZN BadWindow
errors.
+.LP
+The function
+.ZN Xutf8SetWMProperties
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH PROPERTIES
.TP 1i
\s-1WM_CLASS\s+1
diff --git a/man/XSetWMProtocols.man b/man/XSetWMProtocols.man
index 24821304..f04661c6 100644
--- a/man/XSetWMProtocols.man
+++ b/man/XSetWMProtocols.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSeWMProt.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,11 +140,11 @@
.el .sp 10p
..
.ny0
-.TH XSetWMProtocols 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSetWMProtocols 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSetWMProtocols, XGetWMProtocols \- set or read a window's WM__PROTOCOLS property
.SH SYNTAX
-Status XSetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols\fP, \
+Status XSetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols\fP,
\fIcount\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -153,7 +155,7 @@ Status XSetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols\fP, \
.br
int \fIcount\fP\^;
.LP
-Status XGetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols_return\fP, \
+Status XGetWMProtocols\^(\^\fIdisplay\fP, \fIw\fP, \fIprotocols_return\fP,
\fIcount_return\fP\^)
.br
Display *\fIdisplay\fP\^;
diff --git a/man/XStoreBytes.man b/man/XStoreBytes.man
index d2ca223c..f1880bf3 100644
--- a/man/XStoreBytes.man
+++ b/man/XStoreBytes.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XStBytes.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XStoreBytes 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XStoreBytes 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XStoreBytes, XStoreBuffer, XFetchBytes, XFetchBuffer, XRotateBuffers \- manipulate cut and paste buffers
.SH SYNTAX
@@ -181,7 +183,7 @@ XRotateBuffers\^(\^\fIdisplay\fP, \fIrotate\fP\^)
.br
int \fIrotate\fP\^;
.SH ARGUMENTS
-.ds Fn in which you want to store the bytes \
+.ds Fn in which you want to store the bytes
or from which you want the stored data returned
.IP \fIbuffer\fP 1i
Specifies the buffer \*(Fn.
diff --git a/man/XStoreColors.man b/man/XStoreColors.man
index c849a5ff..c98f0516 100644
--- a/man/XStoreColors.man
+++ b/man/XStoreColors.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XStColors.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XStoreColors 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XStoreColors 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XStoreColors, XStoreColor, XStoreNamedColor \- set colors
.SH SYNTAX
diff --git a/man/XStringListToTextProperty.man b/man/XStringListToTextProperty.man
index 7a0021c0..880bd658 100644
--- a/man/XStringListToTextProperty.man
+++ b/man/XStringListToTextProperty.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XSLTTProp.man,v 1.4 2001/02/09 03:47:46 tsi Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,11 +141,11 @@
.el .sp 10p
..
.ny0
-.TH XStringListToTextProperty 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XStringListToTextProperty 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XStringListToTextProperty, XTextPropertyToStringList, XFreeStringList, XTextProperty \- convert string lists and text property structure
.SH SYNTAX
-Status XStringListToTextProperty\^(\^\fIlist\fP, \fIcount\fP, \
+Status XStringListToTextProperty\^(\^\fIlist\fP, \fIcount\fP,
\fItext_prop_return\fP\^)
.br
char **\fIlist\fP\^;
@@ -151,7 +154,7 @@ Status XStringListToTextProperty\^(\^\fIlist\fP, \fIcount\fP, \
.br
XTextProperty *\fItext_prop_return\fP\^;
.LP
-Status XTextPropertyToStringList\^(\^\fItext_prop\fP, \fIlist_return\fP, \
+Status XTextPropertyToStringList\^(\^\fItext_prop\fP, \fIlist_return\fP,
\fIcount_return\fP\^)
.br
XTextProperty *\fItext_prop\fP\^;
@@ -224,7 +227,8 @@ To free the storage for the list and its contents, use
The
.ZN XFreeStringList
function releases memory allocated by
-.ZN XmbTextPropertyToTextList
+.ZN XmbTextPropertyToTextList ,
+.ZN Xutf8TextPropertyToTextList
and
.ZN XTextPropertyToStringList
and the missing charset list allocated by
diff --git a/man/XStringToKeysym.man b/man/XStringToKeysym.man
index 10615df3..ce512906 100644
--- a/man/XStringToKeysym.man
+++ b/man/XStringToKeysym.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XStTKsym.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XStringToKeysym 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XStringToKeysym 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XStringToKeysym, XKeysymToString, XKeycodeToKeysym, XKeysymToKeycode, XConvertCase \- convert keysyms
.SH SYNTAX
diff --git a/man/XSupportsLocale.man b/man/XSupportsLocale.man
index fa6874fb..8fdfcfaf 100644
--- a/man/XSupportsLocale.man
+++ b/man/XSupportsLocale.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSupLoc.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSupportsLocal 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSupportsLocal 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSupportsLocale, XSetLocaleModifiers \- determine locale support and configure locale modifiers
.SH SYNTAX
diff --git a/man/XSynchronize.man b/man/XSynchronize.man
index d37c8f92..cca18fd1 100644
--- a/man/XSynchronize.man
+++ b/man/XSynchronize.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XSync.man,v 1.2 2001/01/27 18:20:05 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XSynchronize 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XSynchronize 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XSynchronize, XSetAfterFunction \- enable or disable synchronization
.SH SYNTAX
diff --git a/man/XTextExtents.man b/man/XTextExtents.man
index c897a7c5..15f30967 100644
--- a/man/XTextExtents.man
+++ b/man/XTextExtents.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XTextExt.man,v 1.3 2001/02/09 03:47:47 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,11 +140,11 @@
.el .sp 10p
..
.ny0
-.TH XTextExtents 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XTextExtents 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XTextExtents, XTextExtents16, XQueryTextExtents, XQueryTextExtents16 \- compute or query text extents
.SH SYNTAX
-XTextExtents\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^, \
+XTextExtents\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^,
\fIdirection_return\fP, \fIfont_ascent_return\fP,
.br
\fIfont_descent_return\fP, \fIoverall_return\fP\^)
@@ -160,7 +162,7 @@ XTextExtents\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^, \
XCharStruct *\fIoverall_return\fP\^;
.LP
-XTextExtents16\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^, \
+XTextExtents16\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^,
\fIdirection_return\fP, \fIfont_ascent_return\fP,
.br
\fIfont_descent_return\fP, \fIoverall_return\fP\^)
@@ -178,7 +180,7 @@ XTextExtents16\^(\^\fIfont_struct\fP\^, \fIstring\fP\^, \fInchars\fP\^, \
XCharStruct *\fIoverall_return\fP\^;
.LP
-XQueryTextExtents\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP, \
+XQueryTextExtents\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP,
\fInchars\fP, \fIdirection_return\fP, \fIfont_ascent_return\fP,
.br
\fIfont_descent_return\fP, \fIoverall_return\fP\^)
@@ -197,7 +199,7 @@ XQueryTextExtents\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP, \
.br
XCharStruct *\fIoverall_return\fP\^;
.LP
-XQueryTextExtents16\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP, \
+XQueryTextExtents16\^(\^\fIdisplay\fP, \fIfont_ID\fP, \fIstring\fP,
\fInchars\fP, \fIdirection_return\fP, \fIfont_ascent_return\fP,
.br
\fIfont_descent_return\fP, \fIoverall_return\fP\^)
diff --git a/man/XTextWidth.man b/man/XTextWidth.man
index a5d70143..07167075 100644
--- a/man/XTextWidth.man
+++ b/man/XTextWidth.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XTextWid.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XTextWidth 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XTextWidth 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XTextWidth, XTextWidth16 \- compute text width
.SH SYNTAX
diff --git a/man/XTranslateCoordinates.man b/man/XTranslateCoordinates.man
index 2037665a..a6cd6d96 100644
--- a/man/XTranslateCoordinates.man
+++ b/man/XTranslateCoordinates.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XTranWCo.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XTranslateCoordinates 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XTranslateCoordinates 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XTranslateCoordinates \- translate window coordinates
.SH SYNTAX
diff --git a/man/XUnmapEvent.man b/man/XUnmapEvent.man
index a94bc331..e983c8a7 100644
--- a/man/XUnmapEvent.man
+++ b/man/XUnmapEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XUmapEven.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XUnmapEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XUnmapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XUnmapEvent \- UnmapNotify event structure
.SH STRUCTURES
diff --git a/man/XUnmapWindow.man b/man/XUnmapWindow.man
index 98e5519d..33d58e06 100644
--- a/man/XUnmapWindow.man
+++ b/man/XUnmapWindow.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XUnmapWin.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XUnmapWindow 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XUnmapWindow 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XUnmapWindow, XUnmapSubwindows \- unmap windows
.SH SYNTAX
diff --git a/man/XVaCreateNestedList.man b/man/XVaCreateNestedList.man
index 56be7f32..c979a296 100644
--- a/man/XVaCreateNestedList.man
+++ b/man/XVaCreateNestedList.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XVCNList.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XVaCreateNestedList 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XVaCreateNestedList 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XVaCreateNestedList \- allocate a nested variable argument list
.SH SYNTAX
diff --git a/man/XVisibilityEvent.man b/man/XVisibilityEvent.man
index 218e4005..4bd013aa 100644
--- a/man/XVisibilityEvent.man
+++ b/man/XVisibilityEvent.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XVEvent.man,v 1.3 2001/08/13 19:34:52 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,9 +140,9 @@
.el .sp 10p
..
.ny0
-.TH XVisibilityEvent 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XVisibilityEvent 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XVisibilityNotifyEvent \- VisibilityNotify event structure
+XVisibilityEvent \- VisibilityNotify event structure
.SH STRUCTURES
The structure for
.ZN VisibilityNotify
@@ -150,7 +152,7 @@ events contains:
.TA .5i 3i
.ta .5i 3i
typedef struct {
- int type; /* VisibiltyNotify */
+ int type; /* VisibilityNotify */
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* true if this came from a SendEvent request */
Display *display; /* Display the event was read from */
diff --git a/man/XWarpPointer.man b/man/XWarpPointer.man
index 0db9dce3..5ce6499e 100644
--- a/man/XWarpPointer.man
+++ b/man/XWarpPointer.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XWarpPntr.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XWarpPointer 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XWarpPointer 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XWarpPointer \- move pointer
.SH SYNTAX
diff --git a/man/XcmsAllocColor.man b/man/XcmsAllocColor.man
index 685b3409..25b4f5f7 100644
--- a/man/XcmsAllocColor.man
+++ b/man/XcmsAllocColor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsAClr.man,v 3.3 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsAllocColor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsAllocColor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsAllocColor, XcmsAllocNamedColor \- allocate colors
.SH SYNTAX
@@ -172,23 +174,18 @@ Status XcmsAllocNamedColor\^(\^\fIdisplay\fP\^, \fIcolormap\fP\^, \fIcolor_strin
Specifies the connection to the X server.
.IP \fIcolormap\fP 1i
Specifies the colormap.
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsAClr.man,v 1.3 2001/03/16 17:47:48 pookie Exp $
.IP \fIcolor_exact_return\fP 1i
Returns the color specification parsed from the color string
or parsed from the corresponding string found in a color-name database.
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsAClr.man,v 1.3 2001/03/16 17:47:48 pookie Exp $
.IP \fIcolor_in_out\fP 1i
Specifies the color to allocate and returns the pixel and color
that is actually used in the colormap.
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsAClr.man,v 1.3 2001/03/16 17:47:48 pookie Exp $
.IP \fIcolor_screen_return\fP 1i
Returns the pixel value of the color cell and color specification
that actually is stored for that cell.
.ds St \ whose color definition structure is to be returned
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsAClr.man,v 1.3 2001/03/16 17:47:48 pookie Exp $
.IP \fIcolor_string\fP 1i
Specifies the color string\*(St.
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsAClr.man,v 1.3 2001/03/16 17:47:48 pookie Exp $
.IP \fIresult_format\fP 1i
Specifies the color format for the returned color specification.
.SH DESCRIPTION
diff --git a/man/XcmsCCCOfColormap.man b/man/XcmsCCCOfColormap.man
index 36d7377f..ebd4198b 100644
--- a/man/XcmsCCCOfColormap.man
+++ b/man/XcmsCCCOfColormap.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/Xcms3CoC.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsCCCOfColormap 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsCCCOfColormap 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsCCCOfColormap, XcmsSetCCCOfColormap \- query and modify CCC of a colormap
.SH SYNTAX
diff --git a/man/XcmsCIELabQueryMaxC.man b/man/XcmsCIELabQueryMaxC.man
index 3e785d16..6f7de989 100644
--- a/man/XcmsCIELabQueryMaxC.man
+++ b/man/XcmsCIELabQueryMaxC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsLaQMC.man,v 1.3 2001/02/09 03:47:47 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsCIELabQueryMax 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsCIELabQueryMax 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsCIELabQueryMaxC, XcmsCIELabQueryMaxL, XcmsCIELabQueryMaxLC, XcmsCIELabQueryMinL \- obtain the CIE L*a*b* coordinates
.SH SYNTAX
@@ -187,9 +189,9 @@ are ignored.
.ds Ch maximum lightness (MaxL) or minimum lightness (MinL)
.IP \fIchroma\fP 1i
Specifies the chroma at which to find \*(Ch.
-.ds Lc maximum chroma (MaxC and MaxLC), maximum lightnes (MaxL), \
+.ds Lc maximum chroma (MaxC and MaxLC), maximum lightnes (MaxL),
or minimum lightness (MinL)
-.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \
+.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL),
or hue angle (MaxLC)
.IP \fIcolor_return\fP 1i
Returns the CIE L*a*b* coordinates of \*(Lc
@@ -197,7 +199,7 @@ displayable by the screen for the given \*(lC.
The white point associated with the returned
color specification is the Screen White Point.
The value returned in the pixel member is undefined.
-.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
+.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL),
or minimum lightness (MinL)
.IP \fIhue_angle\fP 1i
Specifies the hue angle (in degrees) at which to find \*(Ha.
diff --git a/man/XcmsCIELuvQueryMaxC.man b/man/XcmsCIELuvQueryMaxC.man
index 60fe8e16..f813d77d 100644
--- a/man/XcmsCIELuvQueryMaxC.man
+++ b/man/XcmsCIELuvQueryMaxC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsLuQMC.man,v 1.3 2001/02/09 03:47:47 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsCIELuvQueryMaxC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsCIELuvQueryMaxC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsCIELuvQueryMaxC, XcmsCIELuvQueryMaxL, XcmsCIELuvQueryMaxLC, XcmsCIELuvQueryMinL \- obtain the CIE L*u*v* coordinates
.SH SYNTAX
@@ -187,9 +189,9 @@ are ignored.
.ds Ch maximum lightness (MaxL) or minimum lightness (MinL)
.IP \fIchroma\fP 1i
Specifies the chroma at which to find \*(Ch.
-.ds Lc maximum chroma (MaxC and MaxLC), maximum lightnes (MaxL), \
+.ds Lc maximum chroma (MaxC and MaxLC), maximum lightnes (MaxL),
or minimum lightness (MinL)
-.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \
+.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL),
or hue angle (MaxLC)
.IP \fIcolor_return\fP 1i
Returns the CIE L*u*v* coordinates of \*(Lc
@@ -197,7 +199,7 @@ displayable by the screen for the given \*(lC.
The white point associated with the returned
color specification is the Screen White Point.
The value returned in the pixel member is undefined.
-.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
+.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL),
or minimum lightness (MinL)
.IP \fIhue_angle\fP 1i
Specifies the hue angle (in degrees) at which to find \*(Ha.
diff --git a/man/XcmsColor.man b/man/XcmsColor.man
index a19630f6..8f8ccfac 100644
--- a/man/XcmsColor.man
+++ b/man/XcmsColor.man
@@ -1,5 +1,4 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
.\" "Software"), to deal in the Software without restriction, including
@@ -40,6 +39,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsClr.man,v 3.4 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +139,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsColor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsColor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsColor, XcmsRGB, XcmsRGBi, XcmsCIEXYZ, XcmsCIEuvY, XcmsCIExyY, XcmsCIELab, XcmsCIELuv, XcmsTekHVC, XcmsPad \- Xcms color struture
.SH STRUCTURES
diff --git a/man/XcmsConvertColors.man b/man/XcmsConvertColors.man
index 1a7c55ad..1b5f833f 100644
--- a/man/XcmsConvertColors.man
+++ b/man/XcmsConvertColors.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsCClrs.man,v 1.2 2001/01/27 18:20:06 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsConvertColors 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsConvertColors 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsConvertColors \- convert CCC color specifications
.SH SYNTAX
diff --git a/man/XcmsCreateCCC.man b/man/XcmsCreateCCC.man
index 8fc15459..7af3c39f 100644
--- a/man/XcmsCreateCCC.man
+++ b/man/XcmsCreateCCC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsCre3C.man,v 1.2 2001/01/27 18:20:07 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsCreateCCC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsCreateCCC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsCreateCCC, XcmsFreeCCC \- creating and destroying CCCs
.SH SYNTAX
diff --git a/man/XcmsDefaultCCC.man b/man/XcmsDefaultCCC.man
index 9a9996dc..413e5346 100644
--- a/man/XcmsDefaultCCC.man
+++ b/man/XcmsDefaultCCC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsD3C.man,v 1.2 2001/01/27 18:20:07 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsDefaultCCC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsDefaultCCC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsDefaultCCC \- obtain the default CCC for a screen
.SH SYNTAX
diff --git a/man/XcmsQueryBlack.man b/man/XcmsQueryBlack.man
index 3598b769..e9269f7c 100644
--- a/man/XcmsQueryBlack.man
+++ b/man/XcmsQueryBlack.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsQBlk.man,v 1.2 2001/01/27 18:20:07 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsQueryBlack 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsQueryBlack 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsQueryBlack, XcmsQueryBlue, XcmsQueryGreen, XcmsQueryRed, XcmsQueryWhite \- obtain black, blue, green, red, and white CCC color specifications
.SH SYNTAX
diff --git a/man/XcmsQueryColor.man b/man/XcmsQueryColor.man
index ea91e167..c5108756 100644
--- a/man/XcmsQueryColor.man
+++ b/man/XcmsQueryColor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsQClr.man,v 3.3 2001/01/27 18:20:07 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsQueryColor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsQueryColor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsQueryColor, XcmsQueryColors, XcmsLookupColor \- obtain color values
.SH SYNTAX
@@ -182,7 +184,6 @@ Status XcmsLookupColor\^(\^\fIdisplay\fP, \fIcolormap\fP\^, \fIcolor_string\fP\^
Specifies the connection to the X server.
.IP \fIcolormap\fP 1i
Specifies the colormap.
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsQClr.man,v 1.3 2001/03/16 17:47:49 pookie Exp $
.IP \fIcolor_exact_return\fP 1i
Returns the color specification parsed from the color string
or parsed from the corresponding string found in a color-name database.
@@ -194,10 +195,8 @@ structure.
.IP \fIcolor_screen_return\fP 1i
Returns the color that can be reproduced on the screen.
.ds St
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsQClr.man,v 1.3 2001/03/16 17:47:49 pookie Exp $
.IP \fIcolor_string\fP 1i
Specifies the color string\*(St.
-.\" $Header: /X.org/CVS/xc/doc/man/X11/XcmsQClr.man,v 1.3 2001/03/16 17:47:49 pookie Exp $
.IP \fIresult_format\fP 1i
Specifies the color format for the returned color
specifications (color_screen_return and color_exact_return arguments).
diff --git a/man/XcmsSetWhitePoint.man b/man/XcmsSetWhitePoint.man
index 760ce854..bbb35d4c 100644
--- a/man/XcmsSetWhitePoint.man
+++ b/man/XcmsSetWhitePoint.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsSWP.man,v 1.2 2001/01/27 18:20:07 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsSetWhitePoint 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsSetWhitePoint 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsSetWhitePoint, XcmsSetWhiteAdjustProc \- modifying CCC attributes
.SH SYNTAX
diff --git a/man/XcmsStoreColor.man b/man/XcmsStoreColor.man
index 65d0e3a4..f231ff07 100644
--- a/man/XcmsStoreColor.man
+++ b/man/XcmsStoreColor.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsSClr.man,v 1.2 2001/01/27 18:20:07 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsStoreColor 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsStoreColor 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsStoreColor, XcmsStoreColors \- set colors
.SH SYNTAX
diff --git a/man/XcmsTekHVCQueryMaxC.man b/man/XcmsTekHVCQueryMaxC.man
index fe399866..cdd84b9f 100644
--- a/man/XcmsTekHVCQueryMaxC.man
+++ b/man/XcmsTekHVCQueryMaxC.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XcmsTQMC.man,v 1.3 2001/02/09 03:47:47 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XcmsTekHVCQueryMaxC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XcmsTekHVCQueryMaxC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XcmsTekHVCQueryMaxC, XcmsTekHVCQueryMaxV, XcmsTekHVCQueryMaxVC, XcmsTekHVCQueryMaxVSamples, XcmsTekHVCQueryMinV \- obtain the TekHVC coordinates
.SH SYNTAX
@@ -203,20 +205,20 @@ such that the Chroma is the maximum attainable for the Value and Hue.
The white point associated with the returned
color specification is the Screen White Point.
The value returned in the pixel member is undefined.
-.ds Lc maximum Chroma along with the actual Hue and Value (MaxC), \
-maximum Value along with the Hue and Chroma (MaxV), \
-color specification in XcmsTekHVC for the maximum Chroma, \
-the Value at which that maximum Chroma is reached and actual Hue (MaxVC) \
+.ds Lc maximum Chroma along with the actual Hue and Value (MaxC),
+maximum Value along with the Hue and Chroma (MaxV),
+color specification in XcmsTekHVC for the maximum Chroma,
+the Value at which that maximum Chroma is reached and actual Hue (MaxVC)
or minimum Value and the actual Hue and Chroma (MinL)
-.ds lC maximum Chroma (MaxC and MaxVC), maximum Value (MaxV), or \
+.ds lC maximum Chroma (MaxC and MaxVC), maximum Value (MaxV), or
minimum Value (MinL)
.IP \fIcolor_return\fP 1i
Returns the \*(Lc at which the \*(lC was found.
The white point associated with the returned
color specification is the Screen White Point.
The value returned in the pixel member is undefined.
-.ds Hu in which to find the maximum Chroma (MaxC and MaxVC), \
-maximum Value (MaxV), the maximum Chroma/Value samples (MaxVSamples), \
+.ds Hu in which to find the maximum Chroma (MaxC and MaxVC),
+maximum Value (MaxV), the maximum Chroma/Value samples (MaxVSamples),
or the minimum Value (MinL)
.IP \fIhue\fP 1i
Specifies the Hue \*(Hu.
diff --git a/man/XmbDrawImageString.man b/man/XmbDrawImageString.man
index 5889cb70..997c7036 100644
--- a/man/XmbDrawImageString.man
+++ b/man/XmbDrawImageString.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbDIStr.man,v 1.3 2001/01/27 18:20:07 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbDrawImageString 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbDrawImageString 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbDrawImageString, XwcDrawImageString \- draw image text using a single font set
+XmbDrawImageString, XwcDrawImageString, Xutf8DrawImageString \- draw image text using a single font set
.SH SYNTAX
void XmbDrawImageString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
.br
@@ -173,6 +176,22 @@ void XwcDrawImageString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\
wchar_t *\fIstring\fP\^;
.br
int \fInum_wchars\fP\^;
+.LP
+void Xutf8DrawImageString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
.SH ARGUMENTS
.IP \fId\fP 1i
Specifies the drawable.
@@ -196,15 +215,17 @@ Specifies the character string.
Specify the x and y coordinates\*(Xy.
.SH DESCRIPTION
The
-.ZN XmbDrawImageString
-and
+.ZN XmbDrawImageString ,
.ZN XwcDrawImageString
+and
+.ZN Xutf8DrawImageString
functions fill a destination rectangle with the background pixel defined
in the GC and then paint the text with the foreground pixel.
The filled rectangle is the rectangle returned to overall_logical_return by
-.ZN XmbTextExtents
-or
+.ZN XmbTextExtents ,
.ZN XwcTextExtents
+or
+.ZN Xutf8TextExtents
for the same text and
.ZN XFontSet .
.LP
@@ -214,6 +235,12 @@ has missing charsets, each unavailable character is drawn
with the default string returned by
.ZN XCreateFontSet .
The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8TextExtents
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
XDrawImageString(3X11),
XDrawString(3X11),
diff --git a/man/XmbDrawString.man b/man/XmbDrawString.man
index 9d1fe1e4..c02047ba 100644
--- a/man/XmbDrawString.man
+++ b/man/XmbDrawString.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbDStr.man,v 1.4 2002/04/30 16:45:02 tsi Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbDrawString 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbDrawString 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbDrawString, XwcDrawString \- draw text using a single font set
+XmbDrawString, XwcDrawString, Xutf8DrawString \- draw text using a single font set
.SH SYNTAX
void XmbDrawString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
.br
@@ -173,6 +176,22 @@ void XwcDrawString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^,
wchar_t *\fIstring\fP\^;
.br
int \fInum_wchars\fP\^;
+.LP
+void Xutf8DrawString\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIfont_set\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
.SH ARGUMENTS
.IP \fId\fP 1i
Specifies the drawable.
@@ -196,9 +215,10 @@ Specifies the character string.
Specify the x and y coordinates\*(Xy.
.SH DESCRIPTION
The
-.ZN XmbDrawString
-and
+.ZN XmbDrawString ,
.ZN XwcDrawString
+and
+.ZN Xutf8DrawString
functions draw the specified text with the foreground pixel.
When the
.ZN XFontSet
@@ -206,8 +226,14 @@ has missing charsets, each unavailable character is drawn
with the default string returned by
.ZN XCreateFontSet .
The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8DrawString
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
-XXDrawImageString(3X11),
+XDrawImageString(3X11),
XDrawString(3X11),
XDrawText(3X11),
XmbDrawImageString(3X11),
diff --git a/man/XmbDrawText.man b/man/XmbDrawText.man
index 959a770c..3eef7c01 100644
--- a/man/XmbDrawText.man
+++ b/man/XmbDrawText.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbDTxt.man,v 1.3 2001/01/27 18:20:07 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbDrawText 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbDrawText 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbDrawText, XwcDrawText \- draw text using multiple font sets
+XmbDrawText, XwcDrawText, Xutf8DrawText \- draw text using multiple font sets
.SH SYNTAX
void XmbDrawText\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIitems\fP\^, \fInitems\fP\^)
.br
@@ -169,6 +172,20 @@ void XwcDrawText\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\
XwcTextItem *\fIitems\fP\^;
.br
int \fInitems\fP\^;
+.LP
+void Xutf8DrawText\^(\^\fIdisplay\fP\^, \fId\fP\^, \fIgc\fP\^, \fIx\fP\^, \fIy\fP\^, \fIitems\fP\^, \fInitems\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ Drawable \fId\fP\^;
+.br
+ GC \fIgc\fP\^;
+.br
+ int \fIx\fP\^, \fIy\fP\^;
+.br
+ XmbTextItem *\fIitems\fP\^;
+.br
+ int \fInitems\fP\^;
.SH ARGUMENTS
.IP \fId\fP 1i
Specifies the drawable.
@@ -188,9 +205,10 @@ Specifies the number of text items in the array.
Specify the x and y coordinates\*(Xy.
.SH DESCRIPTION
The
-.ZN XmbDrawText
-and
+.ZN XmbDrawText ,
.ZN XwcDrawText
+and
+.ZN Xutf8DrawText
functions allow complex spacing and font set shifts between text strings.
Each text item is processed in turn, with the origin of a text
element advanced in the primary draw direction by the escapement of the
@@ -205,24 +223,31 @@ Leading text items with a font_set member set to
.ZN None
will not be drawn.
.LP
-.ZN XmbDrawText
-and
+.ZN XmbDrawText ,
.ZN XwcDrawText
+and
+.ZN Xutf8DrawText
do not perform any context-dependent rendering between text segments.
Clients may compute the drawing metrics by passing each text segment to
-.ZN XmbTextExtents
-and
-.ZN XwcTextExtents
-or
-.ZN XmbTextPerCharExtents
-and
+.ZN XmbTextExtents ,
+.ZN XwcTextExtents ,
+.ZN Xutf8TextExtents
+or
+.ZN XmbTextPerCharExtents ,
.ZN XwcTextPerCharExtents .
+.ZN Xutf8TextPerCharExtents .
When the
.ZN XFontSet
has missing charsets, each unavailable character is drawn
with the default string returned by
.ZN XCreateFontSet .
The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8DrawText
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH STRUCTURES
The
.ZN XmbTextItem
diff --git a/man/XmbLookupString.man b/man/XmbLookupString.man
index 48085d08..13beedda 100644
--- a/man/XmbLookupString.man
+++ b/man/XmbLookupString.man
@@ -1,5 +1,6 @@
'\" t
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -40,6 +41,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbLStr.man,v 1.3 2001/01/27 18:20:08 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -140,9 +143,9 @@
..
.ny0
'\" t
-.TH XmbLookupString 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbLookupString 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbLookupString, XwcLookupString \- obtain composed input from an input method
+XmbLookupString, XwcLookupString, Xutf8LookupString \- obtain composed input from an input method
.SH SYNTAX
int XmbLookupString\^(\^\fIic\fP\^, \fIevent\fP\^, \fIbuffer_return\fP\^, \fIbytes_buffer\fP\^, \fIkeysym_return\fP\^, \fIstatus_return\fP\^)
.br
@@ -171,6 +174,20 @@ int XwcLookupString\^(\^\fIic\fP\^, \fIevent\fP\^, \fIbuffer_return\fP\^, \fIbyt
KeySym *\fIkeysym_return\fP\^;
.br
Status *\fIstatus_return\fP\^;
+.LP
+int Xutf8LookupString\^(\^\fIic\fP\^, \fIevent\fP\^, \fIbuffer_return\fP\^, \fIbytes_buffer\fP\^, \fIkeysym_return\fP\^, \fIstatus_return\fP\^)
+.br
+ XIC \fIic\fP\^;
+.br
+ XKeyPressedEvent *\fIevent\fP;
+.br
+ char *\fIbuffer_return\fP\^;
+.br
+ int \fIbytes_buffer\fP\^;
+.br
+ KeySym *\fIkeysym_return\fP\^;
+.br
+ Status *\fIstatus_return\fP\^;
.SH ARGUMENTS
.IP \fIbuffer_return\fP 1i
Returns a multibyte string or wide character string (if any)
@@ -191,9 +208,10 @@ Returns the KeySym computed from the event if this argument is not NULL.
Returns a value indicating what kind of data is returned.
.SH DESCRIPTION
The
-.ZN XmbLookupString
-and
+.ZN XmbLookupString ,
.ZN XwcLookupString
+and
+.ZN Xutf8LookupString
functions return the string from the input method specified
in the buffer_return argument.
If no string is returned,
@@ -206,7 +224,9 @@ If both a string and a KeySym are returned,
the KeySym value does not necessarily correspond to the string returned.
.LP
.ZN XmbLookupString
-returns the length of the string in bytes, and
+and
+.ZN Xutf8LookupString
+return the length of the string in bytes, and
.ZN XwcLookupString
returns the length of the string in characters.
Both
@@ -214,7 +234,9 @@ Both
and
.ZN XwcLookupString
return text in the encoding of the locale bound to the input method
-of the specified input context.
+of the specified input context, and
+.ZN Xutf8LookupString
+returns text in UTF-8 encoding.
.LP
Each string returned by
.ZN XmbLookupString
@@ -223,13 +245,14 @@ and
begins in the initial state of the encoding of the locale
(if the encoding of the locale is state-dependent).
.NT
-To insure proper input processing,
+To ensure proper input processing,
it is essential that the client pass only
.ZN KeyPress
events to
-.ZN XmbLookupString
+.ZN XmbLookupString ,
+.ZN XwcLookupString
and
-.ZN XwcLookupString .
+.ZN Xutf8LookupString .
Their behavior when a client passes a
.ZN KeyRelease
event is undefined.
@@ -237,7 +260,7 @@ event is undefined.
.LP
Clients should check the status_return argument before
using the other returned values.
-These two functions both return a value to status_return
+These three functions each return a value to status_return
that indicates what has been returned in the other arguments.
The possible values returned are:
.TS
@@ -246,9 +269,10 @@ T{
.ZN XBufferOverflow
T} T{
The input string to be returned is too large for the supplied buffer_return.
-The required size
-.Pn ( XmbLookupString
-in bytes;
+The required size (for
+.ZN XmbLookupString ,
+.ZN Xutf8LookupString
+in bytes; for
.ZN XwcLookupString
in characters) is returned as the value of the function,
and the contents of buffer_return and keysym_return are not modified.
@@ -266,9 +290,9 @@ T{
.ZN XLookupChars
T} T{
Some input characters have been composed.
-They are placed in the buffer_return argument,
+They are placed in the buffer_return argument, using the encoding
+described above,
and the string length is returned as the value of the function.
-The string is encoded in the locale bound to the input context.
The content of the keysym_return argument is not modified.
T}
T{
@@ -291,16 +315,24 @@ T}
.TE
.LP
It does not make any difference if the input context passed as an argument to
-.ZN XmbLookupString
-and
+.ZN XmbLookupString ,
.ZN XwcLookupString
+and
+.ZN Xutf8LookupString
is the one currently in possession of the focus or not.
Input may have been composed within an input context before it lost the focus,
and that input may be returned on subsequent calls to
-.ZN XmbLookupString
-or
+.ZN XmbLookupString ,
.ZN XwcLookupString
+or
+.ZN Xutf8LookupString
even though it does not have any more keyboard focus.
+.LP
+The function
+.ZN Xutf8LookupString
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
XLookupKeysym(3X11)
.br
diff --git a/man/XmbResetIC.man b/man/XmbResetIC.man
index a1b07747..71912fb0 100644
--- a/man/XmbResetIC.man
+++ b/man/XmbResetIC.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbRIC.man,v 1.3 2001/01/27 18:20:08 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbResetIC 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbResetIC 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbResetIC, XwcResetIC \- reset the state of an input context
+XmbResetIC, XwcResetIC, Xutf8ResetIC \- reset the state of an input context
.SH SYNTAX
char * XmbResetIC\^(\^\fIic\fP\^)
.br
@@ -149,6 +152,10 @@ char * XmbResetIC\^(\^\fIic\fP\^)
wchar_t * XwcResetIC\^(\^\fIic\fP\^)
.br
XIC \fIic\fP\^;
+.LP
+char * Xutf8ResetIC\^(\^\fIic\fP\^)
+.br
+ XIC \fIic\fP\^;
.SH ARGUMENTS
.IP \fIic\fP 1i
Specifies the input context.
@@ -157,9 +164,10 @@ When
.ZN XNResetState
is set to
.ZN XIMInitialState ,
-.ZN XmbResetIC
-and
+.ZN XmbResetIC ,
.ZN XwcResetIC
+and
+.ZN Xutf8ResetIC
reset an input context to its initial state;
when
.ZN XNResetState
@@ -170,14 +178,21 @@ In both cases, any input pending on that context is deleted.
The input method is required to clear the preedit area, if any,
and update the status accordingly.
Calling
-.ZN XmbResetIC
-or
+.ZN XmbResetIC ,
.ZN XwcResetIC
+or
+.ZN Xutf8ResetIC
does not change the focus.
.LP
The return value of
.ZN XmbResetIC
is its current preedit string as a multibyte string.
+The return value of
+.ZN XwcResetIC
+is its current preedit string as a wide character string.
+The return value of
+.ZN Xutf8ResetIC
+is its current preedit string as an UTF-8 string.
If there is any preedit text drawn or visible to the user,
then these procedures must return a non-NULL string.
If there is no visible preedit text,
@@ -186,6 +201,12 @@ whether these procedures return a non-NULL string or NULL.
.LP
The client should free the returned string by calling
.ZN XFree .
+.LP
+The function
+.ZN Xutf8ResetIC
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
XCreateIC(3X11),
XOpenIM(3X11),
diff --git a/man/XmbTextEscapement.man b/man/XmbTextEscapement.man
index 6eb89877..cb0adca1 100644
--- a/man/XmbTextEscapement.man
+++ b/man/XmbTextEscapement.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbTEsc.man,v 1.3 2001/01/27 18:20:08 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbTextEscapement 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbTextEscapement 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbTextEscapement, XwcTextEscapement \- obtain the escapement of text
+XmbTextEscapement, XwcTextEscapement, Xutf8TextEscapement \- obtain the escapement of text
.SH SYNTAX
int XmbTextEscapement\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
.br
@@ -157,6 +160,14 @@ int XwcTextEscapement\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^)
wchar_t *\fIstring\fP\^;
.br
int \fInum_wchars\fP\^;
+.LP
+int Xutf8TextEscapement\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
.SH ARGUMENTS
.IP \fIfont_set\fP 1i
Specifies the font set.
@@ -168,9 +179,10 @@ Specifies the number of characters in the string argument.
Specifies the character string.
.SH DESCRIPTION
The
-.ZN XmbTextEscapement
-and
+.ZN XmbTextEscapement ,
.ZN XwcTextEscapement
+and
+.ZN Xutf8TextEscapement
functions return the escapement in pixels of the specified string as a value,
using the fonts loaded for the specified font set.
The escapement is the distance in pixels in the primary draw
@@ -180,6 +192,12 @@ dependent on the supplied string.
.LP
Regardless of the character rendering order,
the escapement is always positive.
+.LP
+The function
+.ZN Xutf8TextEscapement
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
XmbTextExtents(3X11),
XmbTextPerCharExtents(3X11)
diff --git a/man/XmbTextExtents.man b/man/XmbTextExtents.man
index fe43c225..b30067f5 100644
--- a/man/XmbTextExtents.man
+++ b/man/XmbTextExtents.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbTExt.man,v 1.4 2001/01/27 18:20:08 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbTextExtents 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbTextExtents 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbTextExtents, XwcTextExtents \- compute text extents
+XmbTextExtents, XwcTextExtents, Xutf8TextExtents \- compute text extents
.SH SYNTAX
int XmbTextExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^, \fIoverall_ink_return\fP\^, \fIoverall_logical_return\fP\^)
.br
@@ -165,6 +168,18 @@ int XwcTextExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_wchars\fP\^, \fI
XRectangle *\fIoverall_ink_return\fP\^;
.br
XRectangle *\fIoverall_logical_return\fP\^;
+.LP
+int Xutf8TextExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^, \fIoverall_ink_return\fP\^, \fIoverall_logical_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.br
+ XRectangle *\fIoverall_ink_return\fP\^;
+.br
+ XRectangle *\fIoverall_logical_return\fP\^;
.SH ARGUMENTS
.IP \fIfont_set\fP 1i
Specifies the font set.
@@ -181,17 +196,19 @@ Returns the overall logical \*(Ov.
Specifies the character string.
.SH DESCRIPTION
The
-.ZN XmbTextExtents
-and
+.ZN XmbTextExtents ,
.ZN XwcTextExtents
+and
+.ZN Xutf8TextExtents
functions set the components of the specified overall_ink_return and
overall_logical_return
arguments to the overall bounding box of the string's image
and a logical bounding box for spacing purposes, respectively.
They return the value returned by
-.ZN XmbTextEscapement
+.ZN XmbTextEscapement ,
+.ZN XwcTextEscapement
or
-.ZN XwcTextEscapement .
+.ZN Xutf8TextEscapement .
These metrics are relative to the drawing origin of the string,
using the fonts loaded for the specified font set.
.LP
@@ -220,6 +237,12 @@ from the default string returned by
.ZN XCreateFontSet
so that the metrics represent the text as it will actually be drawn.
The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8TextExtents
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
XmbTextEscapement(3X11),
XmbTextPerCharExtents(3X11)
diff --git a/man/XmbTextListToTextProperty.man b/man/XmbTextListToTextProperty.man
index 94dffb36..c16edd0b 100644
--- a/man/XmbTextListToTextProperty.man
+++ b/man/XmbTextListToTextProperty.man
@@ -1,5 +1,6 @@
'\" t
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -40,7 +41,9 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
-.\"
+.\"
+.\" $XFree86: xc/doc/man/X11/XTLTTProp.man,v 1.5 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,9 +143,9 @@
..
.ny0
'\" t
-.TH XmbTextListToTextProperty 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbTextListToTextProperty 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbTextListToTextProperty, XwcTextListToTextProperty, XmbTextPropertyToTextList, XwcTextPropertyToTextList, XwcFreeStringList, XDefaultString \- convert text lists and text property structures
+XmbTextListToTextProperty, XwcTextListToTextProperty, Xutf8TextListToTextProperty, XmbTextPropertyToTextList, XwcTextPropertyToTextList, Xutf8TextPropertyToTextList, XwcFreeStringList, XDefaultString \- convert text lists and text property structures
.SH SYNTAX
int XmbTextListToTextProperty\^(\^\fIdisplay\fP\^, \fIlist\fP\^, \fIcount\fP\^, \fIstyle\fP\^, \fItext_prop_return\fP\^)
.br
@@ -168,6 +171,18 @@ int XwcTextListToTextProperty\^(\^\fIdisplay\fP\^, \fIlist\fP\^, \fIcount\fP\^,
.br
XTextProperty *\fItext_prop_return\fP\^;
.LP
+int Xutf8TextListToTextProperty\^(\^\fIdisplay\fP\^, \fIlist\fP\^, \fIcount\fP\^, \fIstyle\fP\^, \fItext_prop_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ char **\fIlist\fP\^;
+.br
+ int \fIcount\fP\^;
+.br
+ XICCEncodingStyle \fIstyle\fP\^;
+.br
+ XTextProperty *\fItext_prop_return\fP\^;
+.LP
int XmbTextPropertyToTextList\^(\^\fIdisplay\fP\^, \fItext_prop\fP\^, \fIlist_return\fP\^, \fIcount_return\fP\^)
.br
Display *\fIdisplay\fP\^;
@@ -188,6 +203,16 @@ int XwcTextPropertyToTextList\^(\^\fIdisplay\fP\^, \fItext_prop\fP\^, \fIlist_re
.br
int *\fIcount_return\fP\^;
.LP
+int Xutf8TextPropertyToTextList\^(\^\fIdisplay\fP\^, \fItext_prop\fP\^, \fIlist_return\fP\^, \fIcount_return\fP\^)
+.br
+ Display *\fIdisplay\fP\^;
+.br
+ XTextProperty *\fItext_prop\fP\^;
+.br
+ char ***\fIlist_return\fP\^;
+.br
+ int *\fIcount_return\fP\^;
+.LP
void XwcFreeStringList\^(\^\fIlist\fP\^)
.br
wchar_t **\fIlist\fP\^;
@@ -219,15 +244,20 @@ Returns the number of \*(Cn.
Specifies the list of strings to be freed.
.SH DESCRIPTION
The
-.ZN XmbTextListToTextProperty
-and
+.ZN XmbTextListToTextProperty ,
.ZN XwcTextListToTextProperty
+and
+.ZN Xutf8TextListToTextProperty
functions set the specified
.ZN XTextProperty
value to a set of null-separated elements representing the concatenation
-of the specified list of null-terminated text strings.
-A final terminating null is stored at the end of the value field
-of text_prop_return but is not included in the nitems member.
+of the specified list of null-terminated text strings. The input text
+strings must be given in the current locale encoding (for
+.ZN XmbTextListToTextProperty
+and
+.ZN XwcTextListToTextProperty ),
+or in UTF-8 encoding (for
+.ZN Xutf8TextListToTextProperty ).
.LP
The functions set the encoding field of text_prop_return to an
.ZN Atom
@@ -241,6 +271,12 @@ or
.ZN XCompoundTextStyle
is specified,
this encoding is ``STRING'' or ``COMPOUND_TEXT'', respectively.
+If the style
+.ZN XUTF8StringStyle
+is specified,
+this encoding is ``UTF8_STRING''. (This is an XFree86 extension introduced in
+XFree86 4.0.2. Its presence is indicated by the macro
+.ZN X_HAVE_UTF8_STRING .)
If the style
.ZN XTextStyle
is specified,
@@ -250,6 +286,8 @@ If the style
is specified,
this encoding is ``STRING'' if the text is fully convertible to STRING,
else ``COMPOUND_TEXT''.
+A final terminating null byte is stored at the end of the value field
+of text_prop_return but is not included in the nitems member.
.LP
If insufficient memory is available for the new value string,
the functions return
@@ -279,13 +317,20 @@ To free the storage for the value field, use
.ZN XFree .
.LP
The
-.ZN XmbTextPropertyToTextList
-and
+.ZN XmbTextPropertyToTextList ,
.ZN XwcTextPropertyToTextList
-functions return a list of text strings in the current locale representing the
+and
+.ZN Xutf8TextPropertyToTextList
+functions return a list of text strings representing the
null-separated elements of the specified
.ZN XTextProperty
-structure.
+structure. The returned strings are encoded using the current locale encoding
+(for
+.ZN XmbTextPropertyToTextList
+and
+.ZN XwcTextPropertyToTextList )
+or in UTF-8 (for
+.ZN Xutf8TextPropertyToTextList ).
The data in text_prop must be format 8.
.LP
Multiple elements of the property (for example, the strings in a disjoint
@@ -294,9 +339,10 @@ The contents of the property are not required to be null-terminated;
any terminating null should not be included in text_prop.nitems.
.LP
If insufficient memory is available for the list and its elements,
-.ZN XmbTextPropertyToTextList
-and
+.ZN XmbTextPropertyToTextList ,
.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
return
.ZN XNoMemory .
If the current locale is not supported,
@@ -307,7 +353,7 @@ to the encoding of the current locale,
the functions return
.ZN XConverterNotFound .
For supported locales,
-existence of a converter from COMPOUND_TEXT, STRING
+existence of a converter from COMPOUND_TEXT, STRING, UTF8_STRING
or the encoding of the current locale is guaranteed if
.ZN XSupportsLocale
returns
@@ -319,14 +365,15 @@ In all of these error cases,
the functions do not set any return values.
.LP
Otherwise,
-.ZN XmbTextPropertyToTextList
-and
+.ZN XmbTextPropertyToTextList ,
.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
return the list of null-terminated text strings to list_return
and the number of text strings to count_return.
.LP
-If the value field of text_prop is not fully convertible to the encoding of
-the current locale,
+If the value field of text_prop is not fully convertible to the
+encoding of the current locale,
the functions return the number of unconvertible characters.
Each unconvertible character is converted to a string in the
current locale that is specific to the current locale.
@@ -334,14 +381,17 @@ To obtain the value of this string,
use
.ZN XDefaultString .
Otherwise,
-.ZN XmbTextPropertyToTextList
-and
+.ZN XmbTextPropertyToTextList ,
.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
return
.ZN Success .
.LP
To free the storage for the list and its contents returned by
-.ZN XmbTextPropertyToTextList ,
+.ZN XmbTextPropertyToTextList
+or
+.ZN Xutf8TextPropertyToTextList ,
use
.ZN XFreeStringList .
To free the storage for the list and its contents returned by
@@ -383,6 +433,14 @@ The returned string is null-terminated.
It is owned by Xlib and should not be modified or freed by the client.
It may be freed after the current locale is changed.
Until freed, it will not be modified by Xlib.
+.LP
+The functions
+.ZN Xutf8TextListToTextProperty
+and
+.ZN Xutf8TextPropertyToTextList
+are an XFree86 extension introduced in XFree86 4.0.2. Their presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH STRUCTURES
The
.ZN XTextProperty
@@ -406,21 +464,21 @@ structure contains:
.TS
lw(.5i) lw(2i) lw(2.5i).
T{
-#define
+\&#define
T} T{
.ZN XNoMemory
T} T{
\-1
T}
T{
-#define
+\&#define
T} T{
.ZN XLocaleNotSupported
T} T{
\-2
T}
T{
-#define
+\&#define
T} T{
.ZN XConverterNotFound
T} T{
@@ -434,7 +492,8 @@ typedef enum {
XStringStyle, /* STRING */
XCompoundTextStyle, /* COMPOUND_TEXT */
XTextStyle, /* text in owner's encoding (current locale) */
- XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
+ XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */
+ XUTF8StringStyle /* UTF8_STRING */
} XICCEncodingStyle;
.De
.SH "SEE ALSO"
diff --git a/man/XmbTextPerCharExtents.man b/man/XmbTextPerCharExtents.man
index 1173a8a1..acb23547 100644
--- a/man/XmbTextPerCharExtents.man
+++ b/man/XmbTextPerCharExtents.man
@@ -1,4 +1,5 @@
.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
.\"
.\" Permission is hereby granted, free of charge, to any person obtaining
.\" a copy of this software and associated documentation files (the
@@ -39,6 +40,8 @@
.\" Digital and Tektronix makes no representations about the suitability
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
+.\"
+.\" $XFree86: xc/doc/man/X11/XmbTPCEx.man,v 1.4 2001/01/27 18:20:08 dawes Exp $
.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
@@ -138,9 +141,9 @@
.el .sp 10p
..
.ny0
-.TH XmbTextPerCharExtents 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XmbTextPerCharExtents 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
-XmbTextPerCharExtents, XwcTextPerCharExtents \- obtain per-character information for a text string
+XmbTextPerCharExtents, XwcTextPerCharExtents, Xutf8TextPerCharExtents \- obtain per-character information for a text string
.SH SYNTAX
Status XmbTextPerCharExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^, \fIink_array_return\fP\^,
.br
@@ -185,6 +188,28 @@ Status XwcTextPerCharExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_wchars
XRectangle *\fIoverall_ink_return\fP\^;
.br
XRectangle *\fIoverall_logical_return\fP\^;
+.LP
+Status Xutf8TextPerCharExtents\^(\^\fIfont_set\fP\^, \fIstring\fP\^, \fInum_bytes\fP\^, \fIink_array_return\fP\^,
+.br
+ \fIlogical_array_return\fP\^, \fIarray_size\fP\^, \fInum_chars_return\fP\^, \fIoverall_ink_return\fP\^, \fIoverall_logical_return\fP\^)
+.br
+ XFontSet \fIfont_set\fP\^;
+.br
+ char *\fIstring\fP\^;
+.br
+ int \fInum_bytes\fP\^;
+.br
+ XRectangle *\fIink_array_return\fP\^;
+.br
+ XRectangle *\fIlogical_array_return\fP\^;
+.br
+ int \fIarray_size\fP\^;
+.br
+ int *\fInum_chars_return\fP\^;
+.br
+ XRectangle *\fIoverall_ink_return\fP\^;
+.br
+ XRectangle *\fIoverall_logical_return\fP\^;
.SH ARGUMENTS
.IP \fIarray_size\fP 1i
Specifies the size of ink_array_return and logical_array_return.
@@ -210,9 +235,10 @@ Returns the overall logical \*(Ov.
Specifies the character string.
.SH DESCRIPTION
The
-.ZN XmbTextPerCharExtents
-and
+.ZN XmbTextPerCharExtents ,
.ZN XwcTextPerCharExtents
+and
+.ZN Xutf8TextPerCharExtents
functions return the text dimensions of each character of the specified text,
using the fonts loaded for the specified font set.
Each successive element of ink_array_return and logical_array_return
@@ -255,14 +281,22 @@ and num_chars_return is set to the number of rectangles required.
Otherwise, the functions return a nonzero value.
.LP
If the overall_ink_return or overall_logical_return argument is non-NULL,
-.ZN XmbTextPerCharExtents
-and
+.ZN XmbTextPerCharExtents ,
.ZN XwcTextPerCharExtents
+and
+.ZN Xutf8TextPerCharExtents
return the maximum extent of the string's metrics to overall_ink_return
or overall_logical_return, as returned by
-.ZN XmbTextExtents
+.ZN XmbTextExtents ,
+.ZN XwcTextExtents
or
-.ZN XwcTextExtents .
+.ZN Xutf8TextExtents .
+.LP
+The function
+.ZN Xutf8TextPerCharExtents
+is an XFree86 extension introduced in XFree86 4.0.2. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
.SH "SEE ALSO"
XmbTextEscapement(3X11),
XmbTextExtents(3X11)
diff --git a/man/XrmEnumerateDatabase.man b/man/XrmEnumerateDatabase.man
index d91081de..24e17bae 100644
--- a/man/XrmEnumerateDatabase.man
+++ b/man/XrmEnumerateDatabase.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XEnumDB.man,v 1.3 2001/02/07 22:35:20 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,21 +142,21 @@
..
.ny0
'\" t
-.TH XrmEnumerateDatabase 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmEnumerateDatabase 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmEnumerateDatabase \- enumerate resource database entries
.SH SYNTAX
.TS
lw(.5i) lw(2i) lw(2.5i).
T{
-#define
+\&#define
T} T{
.ZN XrmEnumAllLevels
T} T{
0
T}
T{
-#define
+\&#define
T} T{
.ZN XrmEnumOneLevel
T} T{
diff --git a/man/XrmGetFileDatabase.man b/man/XrmGetFileDatabase.man
index 62a9b55c..7b0c6545 100644
--- a/man/XrmGetFileDatabase.man
+++ b/man/XrmGetFileDatabase.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGFDBase.man,v 1.2 2001/01/27 18:19:59 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XrmGetFileDatabase 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmGetFileDatabase 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmLocaleOfDatabase, XrmGetDatabase, XrmSetDatabase, XrmDestroyDatabase \- retrieve and store resource databases
.SH SYNTAX
diff --git a/man/XrmGetResource.man b/man/XrmGetResource.man
index 65dad31d..c4e5f453 100644
--- a/man/XrmGetResource.man
+++ b/man/XrmGetResource.man
@@ -41,6 +41,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XGetRes.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -140,11 +142,11 @@
..
.ny0
'\" e
-.TH XrmGetResource 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmGetResource 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmGetResource, XrmQGetResource, XrmQGetSearchList, XrmQGetSearchResource \- retrieve database resources and search lists
.SH SYNTAX
-Bool XrmGetResource\^(\^\fIdatabase\fP, \fIstr_name\fP, \fIstr_class\fP, \
+Bool XrmGetResource\^(\^\fIdatabase\fP, \fIstr_name\fP, \fIstr_class\fP,
\fIstr_type_return\fP, \fIvalue_return\fP\^)
.br
XrmDatabase \fIdatabase\fP\^;
@@ -157,7 +159,7 @@ Bool XrmGetResource\^(\^\fIdatabase\fP, \fIstr_name\fP, \fIstr_class\fP, \
.br
XrmValue *\fIvalue_return\fP\^;
.LP
-Bool XrmQGetResource\^(\^\fIdatabase\fP, \fIquark_name\fP, \fIquark_class\fP, \
+Bool XrmQGetResource\^(\^\fIdatabase\fP, \fIquark_name\fP, \fIquark_class\fP,
\fIquark_type_return\fP, \fIvalue_return\fP\^)
.br
XrmDatabase \fIdatabase\fP\^;
@@ -172,7 +174,7 @@ Bool XrmQGetResource\^(\^\fIdatabase\fP, \fIquark_name\fP, \fIquark_class\fP, \
.LP
typedef XrmHashTable *XrmSearchList;
.sp
-Bool XrmQGetSearchList\^(\^\fIdatabase\fP, \fInames\fP, \fIclasses\fP, \
+Bool XrmQGetSearchList\^(\^\fIdatabase\fP, \fInames\fP, \fIclasses\fP,
\fIlist_return\fP, \fIlist_length\fP\^)
.br
XrmDatabase \fIdatabase\fP\^;
@@ -185,7 +187,7 @@ Bool XrmQGetSearchList\^(\^\fIdatabase\fP, \fInames\fP, \fIclasses\fP, \
.br
int \fIlist_length\fP\^;
.LP
-Bool XrmQGetSearchResource\^(\^\fIlist\fP, \fIname\fP, \fIclass\fP, \
+Bool XrmQGetSearchResource\^(\^\fIlist\fP, \fIname\fP, \fIclass\fP,
\fItype_return\fP, \fIvalue_return\fP\^)
.br
XrmSearchList \fIlist\fP\^;
diff --git a/man/XrmInitialize.man b/man/XrmInitialize.man
index 9aed6182..ba59fc2f 100644
--- a/man/XrmInitialize.man
+++ b/man/XrmInitialize.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XInitial.man,v 1.3 2001/02/09 03:47:45 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,13 +140,13 @@
.el .sp 10p
..
.ny0
-.TH XrmInitialize 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmInitialize 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmInitialize, XrmParseCommand, XrmValue, XrmOptionKind, XrmOptionDescRec \- initialize the Resource Manager, Resource Manager structures, and parse the command line
.SH SYNTAX
void XrmInitialize\^(\|);
.LP
-void XrmParseCommand\^(\^\fIdatabase\fP\^, \^\fItable\fP\^, \^\fItable_count\fP\^, \
+void XrmParseCommand\^(\^\fIdatabase\fP\^, \^\fItable\fP\^, \^\fItable_count\fP\^,
\^\fIname\fP\^, \^\fIargc_in_out\fP\^, \^\fIargv_in_out\fP\^)
.br
XrmDatabase *\fIdatabase\fP\^;
diff --git a/man/XrmMergeDatabases.man b/man/XrmMergeDatabases.man
index 3cd1f3fc..8538e620 100644
--- a/man/XrmMergeDatabases.man
+++ b/man/XrmMergeDatabases.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XMDBases.man,v 1.2 2001/01/27 18:20:01 dawes Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XrmMergeDatabases 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmMergeDatabases 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmMergeDatabases, XrmCombineDatabase, XrmCombineFileDatabase \- merge resource databases
.SH SYNTAX
diff --git a/man/XrmPutResource.man b/man/XrmPutResource.man
index acbc6d7c..28d92301 100644
--- a/man/XrmPutResource.man
+++ b/man/XrmPutResource.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XPutRes.man,v 1.3 2001/02/09 03:47:46 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,7 +140,7 @@
.el .sp 10p
..
.ny0
-.TH XrmPutResource 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmPutResource 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmPutResource, XrmQPutResource, XrmPutStringResource, XrmQPutStringResource, XrmPutLineResource \- store database resources
.SH SYNTAX
@@ -152,7 +154,7 @@ void XrmPutResource\^(\^\fIdatabase\fP, \fIspecifier\fP, \fItype\fP, \fIvalue\fP
.br
XrmValue *\fIvalue\fP\^;
.LP
-void XrmQPutResource\^(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP, \
+void XrmQPutResource\^(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP,
\fItype\fP, \fIvalue\fP\^)
.br
XrmDatabase *\fIdatabase\fP\^;
@@ -173,7 +175,7 @@ void XrmPutStringResource\^(\^\fIdatabase\fP, \fIspecifier\fP, \fIvalue\fP\^)
.br
char *\fIvalue\fP\^;
.LP
-void XrmQPutStringResource\^(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP, \
+void XrmQPutStringResource\^(\^\fIdatabase\fP, \fIbindings\fP, \fIquarks\fP,
\fIvalue\fP\^)
.br
XrmDatabase *\fIdatabase\fP\^;
diff --git a/man/XrmUniqueQuark.man b/man/XrmUniqueQuark.man
index 54aa3cb7..736193d7 100644
--- a/man/XrmUniqueQuark.man
+++ b/man/XrmUniqueQuark.man
@@ -40,6 +40,8 @@
.\" of this documentation for any purpose.
.\" It is provided ``as is'' without express or implied warranty.
.\"
+.\" $XFree86: xc/doc/man/X11/XUQuark.man,v 1.4 2001/02/09 03:47:47 tsi Exp $
+.\"
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
@@ -138,15 +140,15 @@
.el .sp 10p
..
.ny0
-.TH XrmUniqueQuark 3X11 "Release 6.6" "X Version 11" "XLIB FUNCTIONS"
+.TH XrmUniqueQuark 3X11 __xorgversion__ "XLIB FUNCTIONS"
.SH NAME
XrmUniqueQuark, XrmStringToQuark, XrmPermStringToQuark, XrmQuarkToString, XrmStringToQuarkList, XrmStringToBindingQuarkList \- manipulate resource quarks
.SH SYNTAX
XrmQuark XrmUniqueQuark\^(\|)
.LP
-#define XrmStringToName(string) XrmStringToQuark(string)
-#define XrmStringToClass(string) XrmStringToQuark(string)
-#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+\&#define XrmStringToName(string) XrmStringToQuark(string)
+\&#define XrmStringToClass(string) XrmStringToQuark(string)
+\&#define XrmStringToRepresentation(string) XrmStringToQuark(string)
.sp
XrmQuark XrmStringToQuark\^(\^\fIstring\fP\^)
.br
@@ -156,9 +158,9 @@ XrmQuark XrmPermStringToQuark\^(\^\fIstring\fP\^)
.br
char *\fIstring\fP\^;
.LP
-#define XrmStringToName(string) XrmStringToQuark(string)
-#define XrmStringToClass(string) XrmStringToQuark(string)
-#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+\&#define XrmStringToName(string) XrmStringToQuark(string)
+\&#define XrmStringToClass(string) XrmStringToQuark(string)
+\&#define XrmStringToRepresentation(string) XrmStringToQuark(string)
.sp
XrmQuark XrmStringToQuark\^(\^\fIstring\fP\^)
.br
@@ -168,16 +170,16 @@ XrmQuark XrmPermStringToQuark\^(\^\fIstring\fP\^)
.br
char *\fIstring\fP\^;
.LP
-#define XrmNameToString(name) XrmQuarkToString(name)
-#define XrmClassToString(class) XrmQuarkToString(class)
-#define XrmRepresentationToString(type) XrmQuarkToString(type)
+\&#define XrmNameToString(name) XrmQuarkToString(name)
+\&#define XrmClassToString(class) XrmQuarkToString(class)
+\&#define XrmRepresentationToString(type) XrmQuarkToString(type)
.sp
char *XrmQuarkToString\^(\^\fIquark\fP\^)
.br
XrmQuark \fIquark\fP\^;
.LP
-#define XrmStringToNameList(str, name) XrmStringToQuarkList((str), (name))
-#define XrmStringToClassList(str,class) XrmStringToQuarkList((str), (class))
+\&#define XrmStringToNameList(str, name) XrmStringToQuarkList((str), (name))
+\&#define XrmStringToClassList(str,class) XrmStringToQuarkList((str), (class))
.sp
void XrmStringToQuarkList\^(\^\fIstring\fP, \fIquarks_return\fP\^)
.br
@@ -185,7 +187,7 @@ void XrmStringToQuarkList\^(\^\fIstring\fP, \fIquarks_return\fP\^)
.br
XrmQuarkList \fIquarks_return\fP\^;
.LP
-XrmStringToBindingQuarkList\^(\^\fIstring\fP, \fIbindings_return\fP, \
+XrmStringToBindingQuarkList\^(\^\fIstring\fP, \fIbindings_return\fP,
\fIquarks_return\fP\^)
.br
char *\fIstring\fP\^;
diff --git a/modules/im/ximcp/imCallbk.c b/modules/im/ximcp/imCallbk.c
index 158b1021..e6ffb139 100644
--- a/modules/im/ximcp/imCallbk.c
+++ b/modules/im/ximcp/imCallbk.c
@@ -32,6 +32,7 @@ PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
***********************************************************************/
+/* $XFree86: xc/lib/X11/imCallbk.c,v 3.8 2002/12/15 01:20:56 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -89,7 +90,6 @@ typedef XimCbStatus (*XimCb)(
#define _XimFlushData(im) im->private.proto.flush((im))
#if NeedFunctionPrototypes
-Public Bool _XimCbDispatch(Xim xim, INT16 len, XPointer data, XPointer call_data);
Private XimCbStatus _XimGeometryCallback(Xim, Xic, char*, int);
Private XimCbStatus _XimStrConversionCallback(Xim, Xic, char*, int);
Private XimCbStatus _XimPreeditStartCallback(Xim, Xic, char*, int);
@@ -116,15 +116,10 @@ Private XimCbStatus _XimStatusDrawCallback();
Private XimCbStatus _XimPreeditStateNotifyCallback();
#endif /* NeedFunctionPrototypes */
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
#if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32))
#define RConst /**/
#else
-#define RConst Const
+#define RConst const
#endif
/* NOTE:
@@ -314,7 +309,7 @@ _XimGeometryCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.geometry_callback;
+ XICCallback* cb = &ic->core.geometry_callback;
/* invoke the callack
*/
@@ -345,7 +340,7 @@ _XimStrConversionCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.string_conversion_callback; /* check HM */
+ XICCallback* cb = &ic->core.string_conversion_callback; /* check HM */
XIMStringConversionCallbackStruct cbrec;
/* invoke the callback
@@ -361,7 +356,7 @@ _XimStrConversionCallback(im, ic, proto, len)
cbrec.factor = (unsigned short)
*(CARD32*)&proto[p];
- (*cb->callback)((XIC)ic, cb->client_data, &cbrec);
+ (*cb->callback)((XIC)ic, cb->client_data, (XPointer)&cbrec);
}
else {
@@ -436,19 +431,13 @@ _XimPreeditStartCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.preedit_attr.start_callback;
+ XICCallback* cb = &ic->core.preedit_attr.start_callback;
int ret;
/* invoke the callback
*/
if (cb && cb->callback){
- ret = (*(int (*)(
-#if NeedNestedPrototypes
- XIC, XPointer, XPointer
-#endif
- ))(cb->callback))((XIC)ic,
- cb->client_data,
- (XPointer)NULL);
+ ret = (*(cb->callback))((XIC)ic, cb->client_data, (XPointer)NULL);
}
else {
@@ -499,7 +488,7 @@ _XimPreeditDoneCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.preedit_attr.done_callback;
+ XICCallback* cb = &ic->core.preedit_attr.done_callback;
/* invoke the callback
*/
@@ -669,7 +658,7 @@ _XimPreeditDrawCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.preedit_attr.draw_callback;
+ XICCallback* cb = &ic->core.preedit_attr.draw_callback;
XIMPreeditDrawCallbackStruct cbs;
/* invoke the callback
@@ -680,7 +669,7 @@ _XimPreeditDrawCallback(im, ic, proto, len)
cbs.chg_length = (int)*(INT32*)proto; proto += sz_INT32;
_read_text_from_packet(im, proto, &cbs.text);
- (*cb->callback)((XIC)ic, cb->client_data, &cbs);
+ (*cb->callback)((XIC)ic, cb->client_data, (XPointer)&cbs);
_free_memory_for_text((XIMText*)cbs.text);
}
@@ -708,7 +697,7 @@ _XimPreeditCaretCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.preedit_attr.caret_callback;
+ XICCallback* cb = &ic->core.preedit_attr.caret_callback;
XIMPreeditCaretCallbackStruct cbs;
/* invoke the callback
@@ -718,7 +707,7 @@ _XimPreeditCaretCallback(im, ic, proto, len)
cbs.direction = (XIMCaretDirection)*(CARD32*)proto; proto += sz_CARD32;
cbs.style = (XIMCaretStyle)*(CARD32*)proto; proto += sz_CARD32;
- (*cb->callback)((XIC)ic, cb->client_data, &cbs);
+ (*cb->callback)((XIC)ic, cb->client_data, (XPointer)&cbs);
}
else {
@@ -768,7 +757,7 @@ _XimStatusStartCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.status_attr.start_callback;
+ XICCallback* cb = &ic->core.status_attr.start_callback;
/* invoke the callback
*/
@@ -799,7 +788,7 @@ _XimStatusDoneCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.status_attr.done_callback;
+ XICCallback* cb = &ic->core.status_attr.done_callback;
/* invoke the callback
*/
@@ -830,7 +819,7 @@ _XimStatusDrawCallback(im, ic, proto, len)
int len;
#endif
{
- XIMCallback* cb = &ic->core.status_attr.draw_callback;
+ XICCallback* cb = &ic->core.status_attr.draw_callback;
XIMStatusDrawCallbackStruct cbs;
/* invoke the callback
@@ -846,7 +835,8 @@ _XimStatusDrawCallback(im, ic, proto, len)
(*cb->callback)((XIC)ic, cb->client_data, (XPointer)&cbs);
- _free_memory_for_text((XIMText *)cbs.data.text);
+ if (cbs.type == XIMTextType)
+ _free_memory_for_text((XIMText *)cbs.data.text);
}
else {
@@ -869,7 +859,7 @@ _XimPreeditStateNotifyCallback( im, ic, proto, len )
int len;
#endif
{
- XIMCallback *cb = &ic->core.preedit_attr.state_notify_callback;
+ XICCallback *cb = &ic->core.preedit_attr.state_notify_callback;
/* invoke the callack
*/
@@ -877,7 +867,7 @@ _XimPreeditStateNotifyCallback( im, ic, proto, len )
XIMPreeditStateNotifyCallbackStruct cbrec;
cbrec.state = *(BITMASK32 *)proto;
- (*cb->callback)( (XIC)ic, cb->client_data, &cbrec );
+ (*cb->callback)( (XIC)ic, cb->client_data, (XPointer)&cbrec );
}
else {
/* no callback registered
diff --git a/modules/im/ximcp/imDefFlt.c b/modules/im/ximcp/imDefFlt.c
index 6f32b446..19a67cfd 100644
--- a/modules/im/ximcp/imDefFlt.c
+++ b/modules/im/ximcp/imDefFlt.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imDefFlt.c,v 1.4 2001/01/17 19:41:51 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
diff --git a/modules/im/ximcp/imDefIc.c b/modules/im/ximcp/imDefIc.c
index 37726654..69a492dd 100644
--- a/modules/im/ximcp/imDefIc.c
+++ b/modules/im/ximcp/imDefIc.c
@@ -28,11 +28,17 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imDefIc.c,v 3.8 2001/01/17 19:41:51 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
#include "Ximint.h"
+/* EXTERNS */
+
+/* imRm.c */
+extern Bool _XimCheckCreateICValues();
+
Private Bool
#if NeedFunctionPrototypes
_XimCreateICCheck(
@@ -181,17 +187,17 @@ _XimReCreateIC(ic)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len <= 0) {
preply = reply;
} else {
buf_size = (int)len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
goto ErrorOnReCreateIC;
@@ -205,13 +211,13 @@ _XimReCreateIC(ic)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
goto ErrorOnReCreateIC;
}
ic->private.proto.icid = buf_s[1]; /* icid */
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
_XimRegisterFilter(ic);
@@ -371,17 +377,17 @@ _XimProtoGetICValues(xic, arg)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimGetICValuesCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len <= 0) {
preply = reply;
} else {
buf_size = (int)len;
preply = (XPointer)Xmalloc(len);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimGetICValuesCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
if (preply != reply)
Xfree(preply);
return arg->name;
@@ -393,7 +399,7 @@ _XimProtoGetICValues(xic, arg)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return arg->name;
}
@@ -778,14 +784,14 @@ _XimProtoSetICValues(xic, arg)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimSetICValuesCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
+ } else if (ret_code == XIM_OVERFLOW) {
buf_size = (int)len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimSetICValuesCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
return tmp_name;
@@ -798,11 +804,11 @@ _XimProtoSetICValues(xic, arg)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return tmp_name;
}
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return name;
@@ -922,7 +928,7 @@ _XimProtoDestroyIC(xic)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimDestroyICCheck, (XPointer)ic);
- if(ret_code == XIM_OVERFLOW) {
+ if (ret_code == XIM_OVERFLOW) {
buf_size = len;
preply = (XPointer)Xmalloc(buf_size);
(void)_XimRead(im, &len, preply, buf_size,
@@ -1064,58 +1070,9 @@ _XimResetICCheck(im, len, data, arg)
}
Private char *
-_XimCommitedMbString(im, ic, buf)
- Xim im;
- Xic ic;
- XPointer buf;
-{
- CARD16 *buf_s = (CARD16 *)buf;
- XimCommitInfo info;
- int len;
- int new_len;
- char *commit;
- char *new_commit = NULL;
- char *str;
- Status status;
-
- len = 0;
- for (info = ic->private.proto.commit_info; info; info = info->next)
- len += info->string_len;
- len += buf_s[0];
- if( len == 0 )
- return( NULL );
-
- if (!(commit = (char *)Xmalloc(len + 1)))
- goto Error_On_Reset;
-
- str = commit;
- for (info = ic->private.proto.commit_info; info; info = info->next) {
- (void)memcpy(str, info->string, info->string_len);
- str += info->string_len;
- }
- (void)memcpy(str, (char *)&buf_s[1], buf_s[0]);
- commit[len] = '\0';
-
- new_len = im->methods->ctstombs((XIM)im, commit, len, NULL, 0, &status);
- if (status != XLookupNone) {
- if (!(new_commit = Xmalloc(new_len + 1))) {
- Xfree(commit);
- goto Error_On_Reset;
- }
- (void)im->methods->ctstombs((XIM)im, commit, len,
- new_commit, new_len, NULL);
- new_commit[new_len] = '\0';
- }
- Xfree(commit);
-
-Error_On_Reset:
- _XimFreeCommitInfo( ic );
- return new_commit;
-}
-
-Private char *
-_XimProtoMbReset(xic)
+_XimProtoReset(xic, retfunc)
XIC xic;
+ char * (*retfunc) (Xim im, Xic ic, XPointer buf);
{
Xic ic = (Xic)xic;
Xim im = (Xim)ic->core.im;
@@ -1147,17 +1104,17 @@ _XimProtoMbReset(xic)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimResetICCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len < 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len < 0) {
preply = reply;
} else {
buf_size = len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimResetICCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
return NULL;
@@ -1171,18 +1128,75 @@ _XimProtoMbReset(xic)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
free(preply);
return NULL;
}
- commit = _XimCommitedMbString(im, ic, (XPointer)&buf_s[2]);
+ commit = retfunc(im, ic, (XPointer)&buf_s[2]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
return commit;
}
+Private char *
+_XimCommitedMbString(im, ic, buf)
+ Xim im;
+ Xic ic;
+ XPointer buf;
+{
+ CARD16 *buf_s = (CARD16 *)buf;
+ XimCommitInfo info;
+ int len;
+ int new_len;
+ char *commit;
+ char *new_commit = NULL;
+ char *str;
+ Status status;
+
+ len = 0;
+ for (info = ic->private.proto.commit_info; info; info = info->next)
+ len += info->string_len;
+ len += buf_s[0];
+ if ( len == 0 )
+ return( NULL );
+
+ if (!(commit = (char *)Xmalloc(len + 1)))
+ goto Error_On_Reset;
+
+ str = commit;
+ for (info = ic->private.proto.commit_info; info; info = info->next) {
+ (void)memcpy(str, info->string, info->string_len);
+ str += info->string_len;
+ }
+ (void)memcpy(str, (char *)&buf_s[1], buf_s[0]);
+ commit[len] = '\0';
+
+ new_len = im->methods->ctstombs((XIM)im, commit, len, NULL, 0, &status);
+ if (status != XLookupNone) {
+ if (!(new_commit = Xmalloc(new_len + 1))) {
+ Xfree(commit);
+ goto Error_On_Reset;
+ }
+ (void)im->methods->ctstombs((XIM)im, commit, len,
+ new_commit, new_len, NULL);
+ new_commit[new_len] = '\0';
+ }
+ Xfree(commit);
+
+Error_On_Reset:
+ _XimFreeCommitInfo( ic );
+ return new_commit;
+}
+
+Private char *
+_XimProtoMbReset(xic)
+ XIC xic;
+{
+ return _XimProtoReset(xic, _XimCommitedMbString);
+}
+
Private wchar_t *
_XimCommitedWcString(im, ic, buf)
Xim im;
@@ -1202,7 +1216,7 @@ _XimCommitedWcString(im, ic, buf)
for (info = ic->private.proto.commit_info; info; info = info->next)
len += info->string_len;
len += buf_s[0];
- if( len == 0 )
+ if ( len == 0 )
return( (wchar_t *)NULL );
if (!(commit = (char *)Xmalloc(len + 1)))
@@ -1238,69 +1252,65 @@ Private wchar_t *
_XimProtoWcReset(xic)
XIC xic;
{
- Xic ic = (Xic)xic;
- Xim im = (Xim)ic->core.im;
- CARD32 buf32[BUFSIZE/4];
- CARD8 *buf = (CARD8 *)buf32;
- CARD16 *buf_s = (CARD16 *)&buf[XIM_HEADER_SIZE];
- INT16 len;
- CARD32 reply32[BUFSIZE/4];
- char *reply = (char *)reply32;
- XPointer preply;
- int buf_size;
- int ret_code;
- wchar_t *commit;
+ return (wchar_t *) _XimProtoReset(xic,
+ (char * (*) (Xim, Xic, XPointer)) _XimCommitedWcString);
+}
- if (!IS_IC_CONNECTED(ic))
- return (wchar_t *)NULL;
+Private char *
+_XimCommitedUtf8String(im, ic, buf)
+ Xim im;
+ Xic ic;
+ XPointer buf;
+{
+ CARD16 *buf_s = (CARD16 *)buf;
+ XimCommitInfo info;
+ int len;
+ int new_len;
+ char *commit;
+ char *new_commit = NULL;
+ char *str;
+ Status status;
- buf_s[0] = im->private.proto.imid; /* imid */
- buf_s[1] = ic->private.proto.icid; /* icid */
+ len = 0;
+ for (info = ic->private.proto.commit_info; info; info = info->next)
+ len += info->string_len;
+ len += buf_s[0];
+ if ( len == 0 )
+ return( NULL );
- len = sizeof(CARD16) /* sizeof imid */
- + sizeof(CARD16); /* sizeof icid */
+ if (!(commit = (char *)Xmalloc(len + 1)))
+ goto Error_On_Reset;
- _XimSetHeader((XPointer)buf, XIM_RESET_IC, 0, &len);
- if (!(_XimWrite(im, len, (XPointer)buf)))
- return NULL;
- _XimFlush(im);
- ic->private.proto.waitCallback = True;
- buf_size = BUFSIZE;
- ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
- _XimResetICCheck, (XPointer)ic);
- if(ret_code == XIM_TRUE) {
- preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
- preply = reply;
- } else {
- buf_size = len;
- preply = (XPointer)Xmalloc(buf_size);
- ret_code = _XimRead(im, &len, preply, buf_size,
- _XimResetICCheck, (XPointer)ic);
- if(ret_code != XIM_TRUE) {
- Xfree(preply);
- ic->private.proto.waitCallback = False;
- return NULL;
- }
- }
- } else {
- ic->private.proto.waitCallback = False;
- return NULL;
+ str = commit;
+ for (info = ic->private.proto.commit_info; info; info = info->next) {
+ (void)memcpy(str, info->string, info->string_len);
+ str += info->string_len;
}
- ic->private.proto.waitCallback = False;
- buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
- if (*((CARD8 *)preply) == XIM_ERROR) {
- _XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
- free(preply);
- return NULL;
+ (void)memcpy(str, (char *)&buf_s[1], buf_s[0]);
+ commit[len] = '\0';
+
+ new_len = im->methods->ctstoutf8((XIM)im, commit, len, NULL, 0, &status);
+ if (status != XLookupNone) {
+ if (!(new_commit = Xmalloc(new_len + 1))) {
+ Xfree(commit);
+ goto Error_On_Reset;
+ }
+ (void)im->methods->ctstoutf8((XIM)im, commit, len,
+ new_commit, new_len, NULL);
+ new_commit[new_len] = '\0';
}
+ Xfree(commit);
- commit = _XimCommitedWcString(im, ic, (XPointer)&buf_s[2]);
+Error_On_Reset:
+ _XimFreeCommitInfo( ic );
+ return new_commit;
+}
- Xfree(preply);
- return commit;
+Private char *
+_XimProtoUtf8Reset(xic)
+ XIC xic;
+{
+ return _XimProtoReset(xic, _XimCommitedUtf8String);
}
Private XICMethodsRec ic_methods = {
@@ -1311,8 +1321,10 @@ Private XICMethodsRec ic_methods = {
_XimProtoGetICValues, /* get_values */
_XimProtoMbReset, /* mb_reset */
_XimProtoWcReset, /* wc_reset */
+ _XimProtoUtf8Reset, /* utf8_reset */
_XimProtoMbLookupString, /* mb_lookup_string */
_XimProtoWcLookupString, /* wc_lookup_string */
+ _XimProtoUtf8LookupString /* utf8_lookup_string */
};
Private Bool
@@ -1351,12 +1363,12 @@ _XimDelayModeCreateIC(ic, values, res, num)
_XimSetICMode(res, num, input_style);
- if(_XimSetICValueData(ic, (XPointer)&ic_values, res, num,
+ if (_XimSetICValueData(ic, (XPointer)&ic_values, res, num,
values, XIM_CREATEIC, False)) {
return False;
}
_XimSetCurrentICValues(ic, &ic_values);
- if(!_XimSetICDefaults(ic, (XPointer)&ic_values,
+ if (!_XimSetICDefaults(ic, (XPointer)&ic_values,
XIM_SETICDEFAULTS, res, num)) {
return False;
}
@@ -1543,17 +1555,17 @@ _XimProtoCreateIC(xim, arg)
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code == XIM_TRUE) {
+ if (ret_code == XIM_TRUE) {
preply = reply;
- } else if(ret_code == XIM_OVERFLOW) {
- if(len <= 0) {
+ } else if (ret_code == XIM_OVERFLOW) {
+ if (len <= 0) {
preply = reply;
} else {
buf_size = (int)len;
preply = (XPointer)Xmalloc(buf_size);
ret_code = _XimRead(im, &len, preply, buf_size,
_XimCreateICCheck, 0);
- if(ret_code != XIM_TRUE) {
+ if (ret_code != XIM_TRUE) {
Xfree(preply);
ic->private.proto.waitCallback = False;
goto ErrorOnCreatingIC;
@@ -1567,14 +1579,14 @@ _XimProtoCreateIC(xim, arg)
buf_s = (CARD16 *)((char *)preply + XIM_HEADER_SIZE);
if (*((CARD8 *)preply) == XIM_ERROR) {
_XimProcError(im, 0, (XPointer)&buf_s[3]);
- if(reply != preply)
+ if (reply != preply)
Xfree(preply);
goto ErrorOnCreatingIC;
}
ic->private.proto.icid = buf_s[1]; /* icid */
- if(reply != preply)
- Xfree(preply);
+ if (reply != preply)
+ Xfree(preply);
MARK_IC_CONNECTED(ic);
return (XIC)ic;
diff --git a/modules/im/ximcp/imDefIm.c b/modules/im/ximcp/imDefIm.c
index 2fca3f9e..e420be14 100644
--- a/modules/im/ximcp/imDefIm.c
+++ b/modules/im/ximcp/imDefIm.c
@@ -31,15 +31,22 @@ OF THIS SOFTWARE.
makoto@sm.sony.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imDefIm.c,v 1.11 2002/12/14 01:53:56 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
#include "Xlibint.h"
#include "Xlcint.h"
#include "XlcPublic.h"
+#include "XlcPubI.h"
#include "XimTrInt.h"
#include "Ximint.h"
+
+/* EXTERNS */
+/* imTransR.c */
+extern Bool _XimRegisterDispatcher();
+
Public int
_XimCheckDataSize(buf, len)
XPointer buf;
@@ -158,7 +165,7 @@ _XimCheckLocaleName(im, address, address_len, locale_name, len)
*p = '\0';
for( n = 0; n < len; n++ )
- if( locale_name[n] && !strcmp( pp, locale_name[n] ) )
+ if( locale_name[n] && !_XlcCompareISOLatin1( pp, locale_name[n] ) )
return locale_name[n];
if (finish)
break;
@@ -384,7 +391,7 @@ _XimPreConnect(im)
unsigned long bytes_after;
unsigned char *prop_return;
Atom *atoms;
- Window im_window;
+ Window im_window = 0;
register int i;
if((imserver = XInternAtom(display, XIM_SERVERS, True)) == (Atom)None)
@@ -1030,6 +1037,30 @@ _XimProtoIMFree(im)
_XlcCloseConverter(im->private.proto.ctow_conv);
im->private.proto.ctow_conv = NULL;
}
+ if (im->private.proto.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.proto.ctoutf8_conv);
+ im->private.proto.ctoutf8_conv = NULL;
+ }
+ if (im->private.proto.cstomb_conv) {
+ _XlcCloseConverter(im->private.proto.cstomb_conv);
+ im->private.proto.cstomb_conv = NULL;
+ }
+ if (im->private.proto.cstowc_conv) {
+ _XlcCloseConverter(im->private.proto.cstowc_conv);
+ im->private.proto.cstowc_conv = NULL;
+ }
+ if (im->private.proto.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.proto.cstoutf8_conv);
+ im->private.proto.cstoutf8_conv = NULL;
+ }
+ if (im->private.proto.ucstoc_conv) {
+ _XlcCloseConverter(im->private.proto.ucstoc_conv);
+ im->private.proto.ucstoc_conv = NULL;
+ }
+ if (im->private.proto.ucstoutf8_conv) {
+ _XlcCloseConverter(im->private.proto.ucstoutf8_conv);
+ im->private.proto.ucstoutf8_conv = NULL;
+ }
#ifdef XIM_CONNECTABLE
if (!IS_SERVER_CONNECTED(im) && IS_RECONNECTABLE(im)) {
@@ -1105,6 +1136,13 @@ _XimProtoCloseIM(xim)
#endif /* XIM_CONNECTABLE */
ic = next;
}
+#ifdef XIM_CONNECTABLE
+ if (!(!IS_SERVER_CONNECTED(im) && IS_RECONNECTABLE(im)))
+ im->core.ic_chain = NULL;
+#else
+ im->core.ic_chain = NULL;
+#endif
+
_XimUnregisterServerFilter(im);
_XimResetIMInstantiateCallback(im);
status = (Status)_XimClose(im);
@@ -1429,7 +1467,7 @@ _XimProtoGetIMValues(xim, arg)
INT16 len;
CARD32 reply32[BUFSIZE/4];
char *reply = (char *)reply32;
- XPointer preply;
+ XPointer preply = NULL;
int buf_size;
int ret_code;
char *makeid_name;
@@ -1534,7 +1572,8 @@ Private XIMMethodsRec im_methods = {
_XimProtoGetIMValues, /* get_values */
_XimProtoCreateIC, /* create_ic */
_Ximctstombs, /* ctstombs */
- _Ximctstowcs /* ctstowcs */
+ _Ximctstowcs, /* ctstowcs */
+ _Ximctstoutf8 /* ctstoutf8 */
};
Private Bool
@@ -1594,8 +1633,11 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
CARD16 category = buf[0];
CARD16 idx = buf[1];
int len;
- XlcConv ctom_conv;
- XlcConv ctow_conv;
+ XlcConv ctom_conv = NULL;
+ XlcConv ctow_conv = NULL;
+ XlcConv ctoutf8_conv = NULL;
+ XlcConv conv;
+ XimProtoPrivateRec *private = &im->private.proto;
if (idx == (CARD16)XIM_Default_Encoding_IDX) { /* XXX */
if (!(ctom_conv = _XlcOpenConverter(lcd,
@@ -1604,6 +1646,9 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
if (!(ctow_conv = _XlcOpenConverter(lcd,
XlcNCompoundText, lcd, XlcNWideChar)))
return False;
+ if (!(ctoutf8_conv = _XlcOpenConverter(lcd,
+ XlcNCompoundText, lcd, XlcNUtf8String)))
+ return False;
}
if (category == XIM_Encoding_NameCategory) {
@@ -1616,6 +1661,9 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
if (!(ctow_conv = _XlcOpenConverter(lcd,
XlcNCompoundText, lcd, XlcNWideChar)))
return False;
+ if (!(ctoutf8_conv = _XlcOpenConverter(lcd,
+ XlcNCompoundText, lcd, XlcNUtf8String)))
+ return False;
break;
} else {
/*
@@ -1633,8 +1681,31 @@ _XimGetEncoding(im, buf, name, name_len, detail, detail_len)
} else {
return False;
}
- im->private.proto.ctom_conv = ctom_conv;
- im->private.proto.ctow_conv = ctow_conv;
+
+ private->ctom_conv = ctom_conv;
+ private->ctow_conv = ctow_conv;
+ private->ctoutf8_conv = ctoutf8_conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
+ return False;
+ private->cstomb_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNWideChar)))
+ return False;
+ private->cstowc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
+ return False;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ return False;
+ private->ucstoc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String)))
+ return False;
+ private->ucstoutf8_conv = conv;
+
return True;
}
diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
index 8653a07c..f4f25b06 100644
--- a/modules/im/ximcp/imDefLkup.c
+++ b/modules/im/ximcp/imDefLkup.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imDefLkup.c,v 3.9 2001/08/13 21:46:46 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
@@ -826,7 +827,7 @@ _XimErrorCallback(xim, len, data, call_data)
XIMID imid;
XICID icid;
Xim im = (Xim)call_data;
- Xic ic;
+ Xic ic = NULL;
if (flag & XIM_IMID_VALID) {
imid = buf_s[0];
@@ -844,6 +845,15 @@ _XimErrorCallback(xim, len, data, call_data)
}
Public Bool
+#if NeedFunctionPrototypes
+_XimError(
+ Xim im,
+ Xic ic,
+ CARD16 error_code,
+ INT16 detail_length,
+ CARD16 type,
+ char *detail)
+#else
_XimError(im, ic, error_code, detail_length, type, detail)
Xim im;
Xic ic;
@@ -851,6 +861,7 @@ _XimError(im, ic, error_code, detail_length, type, detail)
INT16 detail_length;
CARD16 type;
char *detail;
+#endif /* NeedFunctionPrototypes */
{
CARD32 buf32[BUFSIZE/4];
CARD8 *buf = (CARD8 *)buf32;
@@ -887,21 +898,15 @@ _XimError(im, ic, error_code, detail_length, type, detail)
return True;
}
-#ifndef MAXINT
-#define MAXINT (~((unsigned int)1 << (8 * sizeof(int)) - 1))
-#endif /* !MAXINT */
-
-Public int
-_Ximctstombs(xim, from, from_len, to, to_len, state)
- XIM xim;
+Private int
+_Ximctsconvert(conv, from, from_len, to, to_len, state)
+ XlcConv conv;
char *from;
int from_len;
char *to;
int to_len;
Status *state;
{
- Xim im = (Xim)xim;
- XlcConv conv = im->private.proto.ctom_conv;
int from_left;
int to_left;
int from_savelen;
@@ -910,6 +915,7 @@ _Ximctstombs(xim, from, from_len, to, to_len, state)
int to_cnvlen;
char *from_buf;
char *to_buf;
+ char scratchbuf[BUFSIZ];
Status tmp_state;
if (!state)
@@ -920,6 +926,10 @@ _Ximctstombs(xim, from, from_len, to, to_len, state)
return 0;
}
+ /* Reset the converter. The CompoundText at 'from' starts in
+ initial state. */
+ _XlcResetConverter(conv);
+
if (to && to_len) {
from_left = from_len;
to_left = to_len;
@@ -953,10 +963,10 @@ _Ximctstombs(xim, from, from_len, to, to_len, state)
from_left = from_len;
from_cnvlen = 0;
to_cnvlen = 0;
- to_buf = NULL;
for (;;) {
from_savelen = from_left;
- to_left = MAXINT;
+ to_buf = scratchbuf;
+ to_left = BUFSIZ;
from_buf = &from[from_cnvlen];
if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
(XPointer *)&to_buf, &to_left, NULL, 0) < 0) {
@@ -964,7 +974,7 @@ _Ximctstombs(xim, from, from_len, to, to_len, state)
return 0;
}
from_cnvlen += (from_savelen - from_left);
- to_cnvlen += (MAXINT - to_left);
+ to_cnvlen += (BUFSIZ - to_left);
if (from_left == 0) {
if (to_cnvlen > 0)
*state = XBufferOverflow;
@@ -977,6 +987,19 @@ _Ximctstombs(xim, from, from_len, to, to_len, state)
}
Public int
+_Ximctstombs(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _Ximctsconvert(((Xim)xim)->private.proto.ctom_conv,
+ from, from_len, to, to_len, state);
+}
+
+Public int
_Ximctstowcs(xim, from, from_len, to, to_len, state)
XIM xim;
char *from;
@@ -995,6 +1018,7 @@ _Ximctstowcs(xim, from, from_len, to, to_len, state)
int to_cnvlen;
char *from_buf;
wchar_t *to_buf;
+ wchar_t scratchbuf[BUFSIZ];
Status tmp_state;
if (!state)
@@ -1005,6 +1029,10 @@ _Ximctstowcs(xim, from, from_len, to, to_len, state)
return 0;
}
+ /* Reset the converter. The CompoundText at 'from' starts in
+ initial state. */
+ _XlcResetConverter(conv);
+
if (to && to_len) {
from_left = from_len;
to_left = to_len;
@@ -1038,10 +1066,10 @@ _Ximctstowcs(xim, from, from_len, to, to_len, state)
from_left = from_len;
from_cnvlen = 0;
to_cnvlen = 0;
- to_buf = (wchar_t *)NULL;
for (;;) {
from_savelen = from_left;
- to_left = MAXINT;
+ to_buf = scratchbuf;
+ to_left = BUFSIZ * sizeof(wchar_t);
from_buf = &from[from_cnvlen];
if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
(XPointer *)&to_buf, &to_left, NULL, 0) < 0) {
@@ -1049,7 +1077,7 @@ _Ximctstowcs(xim, from, from_len, to, to_len, state)
return 0;
}
from_cnvlen += (from_savelen - from_left);
- to_cnvlen += (MAXINT - to_left);
+ to_cnvlen += (BUFSIZ * sizeof(wchar_t) - to_left);
if (from_left == 0) {
if (to_cnvlen > 0)
*state = XBufferOverflow;
@@ -1062,6 +1090,19 @@ _Ximctstowcs(xim, from, from_len, to, to_len, state)
}
Public int
+_Ximctstoutf8(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _Ximctsconvert(((Xim)xim)->private.proto.ctoutf8_conv,
+ from, from_len, to, to_len, state);
+}
+
+Public int
_XimProtoMbLookupString(xic, ev, buffer, bytes, keysym, state)
XIC xic;
XKeyEvent *ev;
@@ -1184,3 +1225,65 @@ _XimProtoWcLookupString(xic, ev, buffer, bytes, keysym, state)
return ret;
}
+
+Public int
+_XimProtoUtf8LookupString(xic, ev, buffer, bytes, keysym, state)
+ XIC xic;
+ XKeyEvent *ev;
+ char *buffer;
+ int bytes;
+ KeySym *keysym;
+ Status *state;
+{
+ Xic ic = (Xic)xic;
+ Xim im = (Xim)ic->core.im;
+ int ret;
+ Status tmp_state;
+ XimCommitInfo info;
+
+ if (!IS_SERVER_CONNECTED(im))
+ return 0;
+
+ if (!state)
+ state = &tmp_state;
+
+ if (ev->type == KeyPress && ev->keycode == 0) { /* Filter function */
+ if (!(info = ic->private.proto.commit_info)) {
+ if (state)
+ *state = XLookupNone;
+ return 0;
+ }
+
+ ret = im->methods->ctstoutf8((XIM)im, info->string,
+ info->string_len, buffer, bytes, state);
+ if (*state == XBufferOverflow)
+ return 0;
+ if (keysym && (info->keysym && *(info->keysym))) {
+ *keysym = *(info->keysym);
+ if (*state == XLookupChars)
+ *state = XLookupBoth;
+ else
+ *state = XLookupKeySym;
+ }
+ _XimUnregCommitInfo(ic);
+
+ } else if (ev->type == KeyPress) {
+ ret = _XimLookupUTF8Text(ic, ev, buffer, bytes, keysym, NULL);
+ if (ret > 0) {
+ if (keysym && *keysym != NoSymbol)
+ *state = XLookupBoth;
+ else
+ *state = XLookupChars;
+ } else {
+ if (keysym && *keysym != NoSymbol)
+ *state = XLookupKeySym;
+ else
+ *state = XLookupNone;
+ }
+ } else {
+ *state = XLookupNone;
+ ret = 0;
+ }
+
+ return ret;
+}
diff --git a/modules/im/ximcp/imDispch.c b/modules/im/ximcp/imDispch.c
index b693537f..830b8b5a 100644
--- a/modules/im/ximcp/imDispch.c
+++ b/modules/im/ximcp/imDispch.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imDispch.c,v 1.3 2001/01/17 19:41:51 dawes Exp $ */
#include <X11/Xlib.h>
#include "Xlibint.h"
@@ -33,6 +34,10 @@ PERFORMANCE OF THIS SOFTWARE.
#include "Xlcint.h"
#include "Ximint.h"
+/* EXTERNS */
+/* imTransR.c */
+extern Bool _XimRegisterDispatcher();
+
Public Bool
#if NeedFunctionPrototypes
_XimRegProtoIntrCallback(
diff --git a/modules/im/ximcp/imExten.c b/modules/im/ximcp/imExten.c
index c73bcf06..911d84d4 100644
--- a/modules/im/ximcp/imExten.c
+++ b/modules/im/ximcp/imExten.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imExten.c,v 1.3 2003/02/20 03:30:36 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
@@ -75,11 +76,12 @@ _XimIsSupportExt(idx)
int n = XIMNumber(extensions) - 1;
for (i = 0; i < n; i++) {
- if (extensions[i].idx == idx)
+ if (extensions[i].idx == idx) {
if (extensions[i].is_support)
return i;
else
break;
+ }
}
return -1;
}
@@ -478,9 +480,12 @@ _XimExtension(im)
len += sizeof(CARD16) /* sizeof imid */
+ sizeof(INT16); /* sizeof length of extensions */
- _XimSetHeader((XPointer)buf, XIM_QUERY_EXTENSION, 0, &len);
- if (!(_XimWrite(im, len, (XPointer)buf)))
+ _XimSetHeader((XPointer)buf, XIM_QUERY_EXTENSION, 0, &len);
+ if (!(_XimWrite(im, len, (XPointer)buf))) {
+ XFree(buf);
return False;
+ }
+ XFree(buf);
_XimFlush(im);
buf_size = BUFSIZE;
ret_code = _XimRead(im, &len, (XPointer)reply, buf_size,
diff --git a/modules/im/ximcp/imImSw.c b/modules/im/ximcp/imImSw.c
index 13ea2a70..c6e5d819 100644
--- a/modules/im/ximcp/imImSw.c
+++ b/modules/im/ximcp/imImSw.c
@@ -32,6 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/imImSw.c,v 1.3 2001/01/17 19:41:51 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -46,8 +47,8 @@ _XimCheckIfDefault(im)
}
XimImsportSW _XimImSportRec[] = {
- _XimCheckIfLocalProcessing, _XimLocalOpenIM, _XimLocalIMFree,
- _XimCheckIfThaiProcessing, _XimThaiOpenIM, _XimThaiIMFree,
- _XimCheckIfDefault, _XimProtoOpenIM, _XimProtoIMFree,
- NULL, NULL, NULL,
+ { _XimCheckIfLocalProcessing, _XimLocalOpenIM, _XimLocalIMFree },
+ { _XimCheckIfThaiProcessing, _XimThaiOpenIM, _XimThaiIMFree },
+ { _XimCheckIfDefault, _XimProtoOpenIM, _XimProtoIMFree },
+ { NULL, NULL, NULL },
};
diff --git a/modules/im/ximcp/imInsClbk.c b/modules/im/ximcp/imInsClbk.c
index 413dd38f..ea28ff36 100644
--- a/modules/im/ximcp/imInsClbk.c
+++ b/modules/im/ximcp/imInsClbk.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imInsClbk.c,v 3.1 2001/01/17 19:41:51 dawes Exp $ */
#include <X11/Xatom.h>
#define NEED_EVENTS
@@ -45,14 +46,8 @@ typedef struct _XimInstCallback {
XrmDatabase rdb;
char *res_name;
char *res_class;
- void (*callback)(
-#if NeedNestedPrototype
- Display* /* display */,
- XPointer /* client_data */,
- XPointer /* call_data */
-#endif
- );
- XPointer *client_data;
+ XIDProc callback;
+ XPointer client_data;
struct _XimInstCallback *next;
} XimInstCallbackRec, *XimInstCallback;
@@ -88,11 +83,19 @@ MakeLocale( lcd, locale )
Private Bool
+#if NeedFunctionPrototypes
+_XimFilterPropertyNotify(
+ Display *display,
+ Window window,
+ XEvent *event,
+ XPointer client_data)
+#else
_XimFilterPropertyNotify( display, window, event, client_data )
Display *display;
Window window;
XEvent *event;
XPointer client_data;
+#endif
{
Atom ims, actual_type, *atoms;
int actual_format;
@@ -163,14 +166,25 @@ _XimFilterPropertyNotify( display, window, event, client_data )
Public Bool
+#if NeedFunctionPrototypes
+_XimRegisterIMInstantiateCallback(
+ XLCd lcd,
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+#else
_XimRegisterIMInstantiateCallback( lcd, display, rdb, res_name, res_class,
callback, client_data )
XLCd lcd;
Display *display;
XrmDatabase rdb;
char *res_name, *res_class;
- XIMProc callback;
- XPointer *client_data;
+ XIDProc callback;
+ XPointer client_data;
+#endif
{
XimInstCallback icb, tmp;
XIM xim;
@@ -226,14 +240,25 @@ _XimRegisterIMInstantiateCallback( lcd, display, rdb, res_name, res_class,
Public Bool
+#if NeedFunctionPrototypes
+_XimUnRegisterIMInstantiateCallback(
+ XLCd lcd,
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+#else
_XimUnRegisterIMInstantiateCallback( lcd, display, rdb, res_name, res_class,
callback, client_data )
XLCd lcd;
Display *display;
XrmDatabase rdb;
char *res_name, *res_class;
- XIMProc callback;
- XPointer *client_data;
+ XIDProc callback;
+ XPointer client_data;
+#endif
{
char locale[XIM_MAXLCNAMELEN];
XimInstCallback icb, picb;
diff --git a/modules/im/ximcp/imInt.c b/modules/im/ximcp/imInt.c
index 05c4b2b0..b38abfb9 100644
--- a/modules/im/ximcp/imInt.c
+++ b/modules/im/ximcp/imInt.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imInt.c,v 3.10 2001/11/16 00:52:27 dawes Exp $ */
#include <X11/Xatom.h>
#include <X11/Xlib.h>
@@ -39,8 +40,13 @@ Private Xim *_XimCurrentIMlist = (Xim *)NULL;
Private int _XimCurrentIMcount = 0;
Private Bool
+#if NeedFunctionPrototypes
+_XimSetIMStructureList(
+ Xim im)
+#else
_XimSetIMStructureList(im)
Xim im;
+#endif
{
register int i;
Xim *xim;
@@ -103,7 +109,7 @@ _XimServerDestroy(im_2_destroy)
continue;
if (im->core.destroy_callback.callback)
- (*im->core.destroy_callback.callback)(im,
+ (*im->core.destroy_callback.callback)((XIM)im,
im->core.destroy_callback.client_data, NULL);
for (ic = im->core.ic_chain; ic; ic = ic->core.next) {
if (ic->core.destroy_callback.callback) {
@@ -148,8 +154,14 @@ _XimServerReconectableDestroy()
#endif /* XIM_CONNECTABLE */
Private char *
+#if NeedFunctionPrototypes
+_XimStrstr(
+ register char *src,
+ register char *dest)
+#else
_XimStrstr(src, dest)
register char *src, *dest;
+#endif
{
int len;
@@ -163,8 +175,13 @@ _XimStrstr(src, dest)
}
Private char *
+#if NeedFunctionPrototypes
+_XimMakeImName(
+ XLCd lcd)
+#else
_XimMakeImName(lcd)
XLCd lcd;
+#endif
{
char* begin = NULL;
char* end = NULL;
@@ -179,13 +196,12 @@ _XimMakeImName(lcd)
end++;
}
}
-
ret = Xmalloc(end - begin + 1);
if (ret != NULL) {
- if (begin != NULL) {
+ if (begin != NULL && end != NULL) {
(void)strncpy(ret, begin, end - begin);
ret[end - begin] = '\0';
- } else {
+ } else {
ret[0] = '\0';
}
}
@@ -194,11 +210,20 @@ _XimMakeImName(lcd)
}
Public XIM
+#if NeedFunctionPrototypes
+_XimOpenIM(
+ XLCd lcd,
+ Display *dpy,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class)
+#else
_XimOpenIM(lcd, dpy, rdb, res_name, res_class)
XLCd lcd;
Display *dpy;
XrmDatabase rdb;
char *res_name, *res_class;
+#endif
{
Xim im;
register int i;
diff --git a/modules/im/ximcp/imLcIc.c b/modules/im/ximcp/imLcIc.c
index 541d2227..740d22fa 100644
--- a/modules/im/ximcp/imLcIc.c
+++ b/modules/im/ximcp/imLcIc.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imLcIc.c,v 1.4 2001/01/17 19:41:52 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -52,9 +53,13 @@ _XimLocalDestroyIC(xic)
XIC xic;
{
Xic ic = (Xic)xic;
+
if(((Xim)ic->core.im)->private.local.current_ic == (XIC)ic) {
- _XimLocalUnSetFocus(xic);
+ ((Xim)ic->core.im)->private.local.current_ic = (XIC)NULL;
}
+ if (ic->core.focus_window)
+ _XUnregisterFilter(ic->core.im->core.display,
+ ic->core.focus_window, _XimLocalFilter, (XPointer)ic);
if(ic->private.local.ic_resources) {
Xfree(ic->private.local.ic_resources);
ic->private.local.ic_resources = NULL;
@@ -84,24 +89,29 @@ _XimLocalSetFocus(xic)
return;
}
-Private char *
-_XimLocalMbReset(xic)
+Private void
+_XimLocalReset(xic)
XIC xic;
{
Xic ic = (Xic)xic;
ic->private.local.composed = (DefTree *)NULL;
ic->private.local.context = ((Xim)ic->core.im)->private.local.top;
- return((char *)NULL);
+}
+
+Private char *
+_XimLocalMbReset(xic)
+ XIC xic;
+{
+ _XimLocalReset(xic);
+ return (char *)NULL;
}
Private wchar_t *
_XimLocalWcReset(xic)
XIC xic;
{
- Xic ic = (Xic)xic;
- ic->private.local.composed = (DefTree *)NULL;
- ic->private.local.context = ((Xim)ic->core.im)->private.local.top;
- return((wchar_t *)NULL);
+ _XimLocalReset(xic);
+ return (wchar_t *)NULL;
}
Private XICMethodsRec Local_ic_methods = {
@@ -112,8 +122,10 @@ Private XICMethodsRec Local_ic_methods = {
_XimLocalGetICValues, /* get_values */
_XimLocalMbReset, /* mb_reset */
_XimLocalWcReset, /* wc_reset */
+ _XimLocalMbReset, /* utf8_reset */
_XimLocalMbLookupString, /* mb_lookup_string */
_XimLocalWcLookupString, /* wc_lookup_string */
+ _XimLocalUtf8LookupString /* utf8_lookup_string */
};
Public XIC
diff --git a/modules/im/ximcp/imLcIm.c b/modules/im/ximcp/imLcIm.c
index 907b0479..8c64cf83 100644
--- a/modules/im/ximcp/imLcIm.c
+++ b/modules/im/ximcp/imLcIm.c
@@ -32,6 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/imLcIm.c,v 1.10 2002/09/21 02:46:04 dawes Exp $ */
#include <stdio.h>
/*
@@ -43,6 +44,7 @@ THIS SOFTWARE.
#include "Xlibint.h"
#include "Xlcint.h"
#include "XlcPublic.h"
+#include "XlcPubI.h"
#include "Ximint.h"
#include <ctype.h>
@@ -80,6 +82,7 @@ XimFreeDefaultTree(top)
if (top->next) XimFreeDefaultTree(top->next);
if (top->mb) Xfree(top->mb);
if (top->wc) Xfree(top->wc);
+ if (top->utf8) Xfree(top->utf8);
Xfree(top);
}
@@ -120,6 +123,38 @@ _XimLocalIMFree(im)
Xfree(im->core.im_name);
im->core.im_name = NULL;
}
+ if (im->private.local.ctom_conv) {
+ _XlcCloseConverter(im->private.local.ctom_conv);
+ im->private.local.ctom_conv = NULL;
+ }
+ if (im->private.local.ctow_conv) {
+ _XlcCloseConverter(im->private.local.ctow_conv);
+ im->private.local.ctow_conv = NULL;
+ }
+ if (im->private.local.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ctoutf8_conv);
+ im->private.local.ctoutf8_conv = NULL;
+ }
+ if (im->private.local.cstomb_conv) {
+ _XlcCloseConverter(im->private.local.cstomb_conv);
+ im->private.local.cstomb_conv = NULL;
+ }
+ if (im->private.local.cstowc_conv) {
+ _XlcCloseConverter(im->private.local.cstowc_conv);
+ im->private.local.cstowc_conv = NULL;
+ }
+ if (im->private.local.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.cstoutf8_conv);
+ im->private.local.cstoutf8_conv = NULL;
+ }
+ if (im->private.local.ucstoc_conv) {
+ _XlcCloseConverter(im->private.local.ucstoc_conv);
+ im->private.local.ucstoc_conv = NULL;
+ }
+ if (im->private.local.ucstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ucstoutf8_conv);
+ im->private.local.ucstoutf8_conv = NULL;
+ }
return;
}
@@ -132,6 +167,7 @@ _XimLocalCloseIM(xim)
XIC next;
ic = im->core.ic_chain;
+ im->core.ic_chain = NULL;
while (ic) {
(*ic->methods->destroy) (ic);
next = ic->core.next;
@@ -196,7 +232,8 @@ Private XIMMethodsRec Xim_im_local_methods = {
_XimLocalGetIMValues, /* get_values */
_XimLocalCreateIC, /* create_ic */
_XimLcctstombs, /* ctstombs */
- _XimLcctstowcs /* ctstowcs */
+ _XimLcctstowcs, /* ctstowcs */
+ _XimLcctstoutf8 /* ctstoutf8 */
};
Public Bool
@@ -204,9 +241,9 @@ _XimLocalOpenIM(im)
Xim im;
{
XLCd lcd = im->core.lcd;
- XlcConv ctom_conv;
- XlcConv ctow_conv;
+ XlcConv conv;
XimDefIMValues im_values;
+ XimLocalPrivateRec* private = &im->private.local;
_XimInitialResourceInfo();
if(_XimSetIMResourceList(&im->core.im_resources,
@@ -229,46 +266,44 @@ _XimLocalOpenIM(im)
_XimCreateDefaultTree(im);
- if (!(ctom_conv = _XlcOpenConverter(lcd,
- XlcNCompoundText, lcd, XlcNMultiByte)))
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte)))
goto Open_Error;
- if (!(ctow_conv = _XlcOpenConverter(lcd,
- XlcNCompoundText, lcd, XlcNWideChar)))
+ private->ctom_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar)))
+ goto Open_Error;
+ private->ctow_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ctoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
+ goto Open_Error;
+ private->cstomb_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNWideChar)))
+ goto Open_Error;
+ private->cstowc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
goto Open_Error;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ goto Open_Error;
+ private->ucstoc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ucstoutf8_conv = conv;
im->methods = &Xim_im_local_methods;
- im->private.local.current_ic = (XIC)NULL;
- im->private.local.ctom_conv = ctom_conv;
- im->private.local.ctow_conv = ctow_conv;
+ private->current_ic = (XIC)NULL;
return(True);
Open_Error :
- if (im->core.im_resources) {
- Xfree(im->core.im_resources);
- im->core.im_resources = NULL;
- }
- if (im->core.ic_resources) {
- Xfree(im->core.ic_resources);
- im->core.ic_resources = NULL;
- }
- if (im->core.im_values_list) {
- Xfree(im->core.im_values_list);
- im->core.im_values_list = NULL;
- }
- if (im->core.ic_values_list) {
- Xfree(im->core.ic_values_list);
- im->core.ic_values_list = NULL;
- }
- if (im->core.styles) {
- Xfree(im->core.styles);
- im->core.styles = NULL;
- }
- if (im->private.local.ctom_conv) {
- _XlcCloseConverter(im->private.local.ctom_conv);
- }
- if (im->private.local.ctow_conv) {
- _XlcCloseConverter(im->private.local.ctow_conv);
- }
+ _XimLocalIMFree(im);
return(False);
}
diff --git a/modules/im/ximcp/imLcLkup.c b/modules/im/ximcp/imLcLkup.c
index fa92701d..46ef857a 100644
--- a/modules/im/ximcp/imLcLkup.c
+++ b/modules/im/ximcp/imLcLkup.c
@@ -29,6 +29,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imLcLkup.c,v 3.6 2001/08/13 21:46:46 dawes Exp $ */
#include <stdio.h>
#include <X11/Xatom.h>
@@ -56,7 +57,7 @@ _XimLocalMbLookupString(xic, ev, buffer, bytes, keysym, status)
if(status) *status = XLookupNone;
return(0);
}
- if(ev->keycode == 0) { /* Composed Event */
+ if(ev->keycode == 0 && ic->private.local.composed != NULL) { /* Composed Event */
ret = strlen(ic->private.local.composed->mb);
if(ret > bytes) {
if(status) *status = XBufferOverflow;
@@ -155,21 +156,72 @@ _XimLocalWcLookupString(xic, ev, buffer, wlen, keysym, status)
return (ret);
}
-#ifndef MAXINT
-#define MAXINT (~((unsigned int)1 << (8 * sizeof(int)) - 1))
-#endif /* !MAXINT */
-
Public int
-_XimLcctstombs(xim, from, from_len, to, to_len, state)
- XIM xim;
+_XimLocalUtf8LookupString(xic, ev, buffer, bytes, keysym, status)
+ XIC xic;
+ XKeyEvent *ev;
+ char *buffer;
+ int bytes;
+ KeySym *keysym;
+ Status *status;
+{
+ Xic ic = (Xic)xic;
+ int ret;
+
+ if(ev->type != KeyPress) {
+ if(status) *status = XLookupNone;
+ return(0);
+ }
+ if(ev->keycode == 0) { /* Composed Event */
+ ret = strlen(ic->private.local.composed->utf8);
+ if(ret > bytes) {
+ if(status) *status = XBufferOverflow;
+ return (ret);
+ }
+ memcpy(buffer, ic->private.local.composed->utf8, ret);
+ if(keysym) *keysym = ic->private.local.composed->ks;
+ if (ret > 0) {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupBoth;
+ } else {
+ if(status) *status = XLookupChars;
+ }
+ } else {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupKeySym;
+ } else {
+ if(status) *status = XLookupNone;
+ }
+ }
+ return (ret);
+ } else { /* Throughed Event */
+ ret = _XimLookupUTF8Text(ic, ev, buffer, bytes, keysym, NULL);
+ if(ret > 0) {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupBoth;
+ } else {
+ if(status) *status = XLookupChars;
+ }
+ } else {
+ if(keysym && *keysym != NoSymbol) {
+ if(status) *status = XLookupKeySym;
+ } else {
+ if(status) *status = XLookupNone;
+ }
+ }
+ }
+ return (ret);
+}
+
+Private int
+_XimLcctsconvert(conv, from, from_len, to, to_len, state)
+ XlcConv conv;
char *from;
int from_len;
char *to;
int to_len;
Status *state;
{
- Xim im = (Xim)xim;
- XlcConv conv = im->private.local.ctom_conv;
int from_left;
int to_left;
int from_savelen;
@@ -178,6 +230,7 @@ _XimLcctstombs(xim, from, from_len, to, to_len, state)
int to_cnvlen;
char *from_buf;
char *to_buf;
+ char scratchbuf[BUFSIZ];
Status tmp_state;
if (!state)
@@ -188,6 +241,10 @@ _XimLcctstombs(xim, from, from_len, to, to_len, state)
return 0;
}
+ /* Reset the converter. The CompoundText at 'from' starts in
+ initial state. */
+ _XlcResetConverter(conv);
+
if (to && to_len) {
from_left = from_len;
to_left = to_len;
@@ -221,10 +278,10 @@ _XimLcctstombs(xim, from, from_len, to, to_len, state)
from_left = from_len;
from_cnvlen = 0;
to_cnvlen = 0;
- to_buf = NULL;
for (;;) {
from_savelen = from_left;
- to_left = MAXINT;
+ to_buf = scratchbuf;
+ to_left = BUFSIZ;
from_buf = &from[from_cnvlen];
if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
(XPointer *)&to_buf, &to_left, NULL, 0) < 0) {
@@ -232,7 +289,7 @@ _XimLcctstombs(xim, from, from_len, to, to_len, state)
return 0;
}
from_cnvlen += (from_savelen - from_left);
- to_cnvlen += (MAXINT - to_left);
+ to_cnvlen += (BUFSIZ - to_left);
if (from_left == 0) {
if (to_cnvlen > 0)
*state = XBufferOverflow;
@@ -245,6 +302,19 @@ _XimLcctstombs(xim, from, from_len, to, to_len, state)
}
Public int
+_XimLcctstombs(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _XimLcctsconvert(((Xim)xim)->private.local.ctom_conv,
+ from, from_len, to, to_len, state);
+}
+
+Public int
_XimLcctstowcs(xim, from, from_len, to, to_len, state)
XIM xim;
char *from;
@@ -263,6 +333,7 @@ _XimLcctstowcs(xim, from, from_len, to, to_len, state)
int to_cnvlen;
char *from_buf;
wchar_t *to_buf;
+ wchar_t scratchbuf[BUFSIZ];
Status tmp_state;
if (!state)
@@ -273,6 +344,10 @@ _XimLcctstowcs(xim, from, from_len, to, to_len, state)
return 0;
}
+ /* Reset the converter. The CompoundText at 'from' starts in
+ initial state. */
+ _XlcResetConverter(conv);
+
if (to && to_len) {
from_left = from_len;
to_left = to_len;
@@ -306,10 +381,10 @@ _XimLcctstowcs(xim, from, from_len, to, to_len, state)
from_left = from_len;
from_cnvlen = 0;
to_cnvlen = 0;
- to_buf = (wchar_t *)NULL;
for (;;) {
from_savelen = from_left;
- to_left = MAXINT;
+ to_buf = scratchbuf;
+ to_left = BUFSIZ * sizeof(wchar_t);
from_buf = &from[from_cnvlen];
if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
(XPointer *)&to_buf, &to_left, NULL, 0) < 0) {
@@ -317,7 +392,7 @@ _XimLcctstowcs(xim, from, from_len, to, to_len, state)
return 0;
}
from_cnvlen += (from_savelen - from_left);
- to_cnvlen += (MAXINT - to_left);
+ to_cnvlen += (BUFSIZ * sizeof(wchar_t) - to_left);
if (from_left == 0) {
if (to_cnvlen > 0)
*state = XBufferOverflow;
@@ -328,3 +403,16 @@ _XimLcctstowcs(xim, from, from_len, to, to_len, state)
}
return to_cnvlen;
}
+
+Public int
+_XimLcctstoutf8(xim, from, from_len, to, to_len, state)
+ XIM xim;
+ char *from;
+ int from_len;
+ char *to;
+ int to_len;
+ Status *state;
+{
+ return _XimLcctsconvert(((Xim)xim)->private.local.ctoutf8_conv,
+ from, from_len, to, to_len, state);
+}
diff --git a/modules/im/ximcp/imLcPrs.c b/modules/im/ximcp/imLcPrs.c
index d3e5813d..7cfa5a16 100644
--- a/modules/im/ximcp/imLcPrs.c
+++ b/modules/im/ximcp/imLcPrs.c
@@ -30,6 +30,8 @@ OR PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/imLcPrs.c,v 1.8 2003/01/15 02:59:33 dawes Exp $ */
+
#include <X11/Xlib.h>
#include <X11/Xmd.h>
#include <X11/Xos.h>
@@ -47,6 +49,14 @@ extern int _Xmbstowcs(
#endif
);
+extern int _Xmbstoutf8(
+#if NeedFunctionPrototypes
+ char *ustr,
+ const char *str,
+ int len
+#endif
+);
+
/*
* Parsing File Format:
*
@@ -293,6 +303,7 @@ modmask(name)
#define AllMask (ShiftMask | LockMask | ControlMask | Mod1Mask)
#define LOCAL_WC_BUFSIZE 128
+#define LOCAL_UTF8_BUFSIZE 256
#define SEQUENCE_MAX 10
static int
@@ -306,13 +317,14 @@ parseline(fp, top, tokenbuf)
unsigned modifier;
unsigned tmp;
KeySym keysym = NoSymbol;
- DefTree *p;
+ DefTree *p = NULL;
Bool exclam, tilde;
- KeySym rhs_keysym;
+ KeySym rhs_keysym = 0;
char *rhs_string_mb;
int l;
int lastch = 0;
wchar_t local_wc_buf[LOCAL_WC_BUFSIZE], *rhs_string_wc;
+ char local_utf8_buf[LOCAL_UTF8_BUFSIZE], *rhs_string_utf8;
struct DefBuffer {
unsigned modifier_mask;
@@ -443,6 +455,17 @@ parseline(fp, top, tokenbuf)
}
memcpy((char *)rhs_string_wc, (char *)local_wc_buf, (l + 1) * sizeof(wchar_t) );
+ l = _Xmbstoutf8(local_utf8_buf, rhs_string_mb, LOCAL_UTF8_BUFSIZE - 1);
+ if (l == LOCAL_UTF8_BUFSIZE - 1) {
+ local_wc_buf[l] = '\0';
+ }
+ if( (rhs_string_utf8 = (char *)Xmalloc(l + 1)) == NULL ) {
+ Xfree( rhs_string_wc );
+ Xfree( rhs_string_mb );
+ return( 0 );
+ }
+ memcpy(rhs_string_utf8, local_utf8_buf, l + 1);
+
for (i = 0; i < n; i++) {
for (p = *top; p; p = p->next) {
if (buf[i].keysym == p->keysym &&
@@ -465,6 +488,7 @@ parseline(fp, top, tokenbuf)
p->next = *top;
p->mb = NULL;
p->wc = NULL;
+ p->utf8 = NULL;
p->ks = NoSymbol;
*top = p;
top = &p->succession;
@@ -477,6 +501,9 @@ parseline(fp, top, tokenbuf)
if( p->wc != NULL )
Xfree( p->wc );
p->wc = rhs_string_wc;
+ if( p->utf8 != NULL )
+ Xfree( p->utf8 );
+ p->utf8 = rhs_string_utf8;
p->ks = rhs_keysym;
return(n);
error:
@@ -491,13 +518,13 @@ _XimParseStringFile(fp, ptop)
FILE *fp;
DefTree **ptop;
{
- char tb[65535];
+ char tb[8192];
char* tbp;
struct stat st;
if (fstat (fileno (fp), &st) != -1) {
unsigned long size = (unsigned long) st.st_size;
- if (size < sizeof tb) tbp = tb;
+ if (size <= sizeof tb) tbp = tb;
else tbp = malloc (size);
if (tbp != NULL) {
diff --git a/modules/im/ximcp/imRm.c b/modules/im/ximcp/imRm.c
index 0455b39e..3af7c391 100644
--- a/modules/im/ximcp/imRm.c
+++ b/modules/im/ximcp/imRm.c
@@ -30,6 +30,7 @@ PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imRm.c,v 3.11 2001/01/22 21:32:32 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -258,7 +259,7 @@ static char *supported_local_ic_values_list[] = {
(char *)NULL
};
-static XIMStyle supported_local_styles[] = {
+static XIMStyle const supported_local_styles[] = {
XIMPreeditNone | XIMStatusNone,
XIMPreeditNothing | XIMStatusNothing,
0 /* dummy */
@@ -945,7 +946,7 @@ _XimEncodeLineSpace(info, top, val)
int *out;
out = (int *)((char *)top + info->offset);
- *out = (int)val;
+ *out = (long)val;
return True;
}
diff --git a/modules/im/ximcp/imRmAttr.c b/modules/im/ximcp/imRmAttr.c
index bcf3a1b7..df05ecb8 100644
--- a/modules/im/ximcp/imRmAttr.c
+++ b/modules/im/ximcp/imRmAttr.c
@@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imRmAttr.c,v 1.6 2001/10/28 03:32:34 tsi Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -628,7 +629,7 @@ _XimValueToAttribute(res, buf, buf_size, value, len, mode, param)
return False;
}
- *((CARD32 *)buf) = (CARD32)value;
+ *((CARD32 *)buf) = (CARD32)(long)value;
*len = ret_len;
break;
@@ -703,7 +704,7 @@ _XimValueToAttribute(res, buf, buf_size, value, len, mode, param)
XFontSet font = (XFontSet)value;
Xic ic = (Xic)param;
char *base_name = NULL;
- int length;
+ int length = 0;
CARD16 *buf_s = (CARD16 *)buf;
if (!font) {
diff --git a/modules/im/ximcp/imThaiFlt.c b/modules/im/ximcp/imThaiFlt.c
index fb609ef3..5168de2b 100644
--- a/modules/im/ximcp/imThaiFlt.c
+++ b/modules/im/ximcp/imThaiFlt.c
@@ -45,6 +45,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/imThaiFlt.c,v 3.18 2003/02/21 03:13:30 dawes Exp $ */
/*
**++
@@ -73,12 +74,36 @@ SOFTWARE.
#include "Ximint.h"
#include "XimThai.h"
+/* EXTERNS */
+/* KeyBind.c */
+extern int _XKeyInitialize();
+
+/* lcStd.c */
+extern int _Xlcmbstowcs(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len
+);
+extern int _Xlcwcstombs(
+ XLCd lcd,
+ char *str,
+ wchar_t *wstr,
+ int len
+);
+extern int _Xlcmbstoutf8(
+ XLCd lcd,
+ char *ustr,
+ const char *str,
+ int len
+);
+
#define SPACE 32
/* character classification table */
#define TACTIS_CHARS 256
Private
-char tactis_chtype[TACTIS_CHARS] = {
+char const tactis_chtype[TACTIS_CHARS] = {
CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 0 - 7 */
CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 8 - 15 */
CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 16 - 23 */
@@ -124,7 +149,7 @@ char tactis_chtype[TACTIS_CHARS] = {
#define CH_CLASSES 17 /* 17 classes of chars */
Private
-char write_rules_lookup[CH_CLASSES][CH_CLASSES] = {
+char const write_rules_lookup[CH_CLASSES][CH_CLASSES] = {
/* Table 0: writing/outputing rules */
/* row: leading char, column: following char */
/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
@@ -148,7 +173,7 @@ char write_rules_lookup[CH_CLASSES][CH_CLASSES] = {
};
Private
-char wtt_isc1_lookup[CH_CLASSES][CH_CLASSES] = {
+char const wtt_isc1_lookup[CH_CLASSES][CH_CLASSES] = {
/* Table 1: WTT default input sequence check rules */
/* row: leading char, column: following char */
/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
@@ -172,7 +197,7 @@ char wtt_isc1_lookup[CH_CLASSES][CH_CLASSES] = {
};
Private
-char wtt_isc2_lookup[CH_CLASSES][CH_CLASSES] = {
+char const wtt_isc2_lookup[CH_CLASSES][CH_CLASSES] = {
/* Table 2: WTT strict input sequence check rules */
/* row: leading char, column: following char */
/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
@@ -196,7 +221,7 @@ char wtt_isc2_lookup[CH_CLASSES][CH_CLASSES] = {
};
Private
-char thaicat_isc_lookup[CH_CLASSES][CH_CLASSES] = {
+char const thaicat_isc_lookup[CH_CLASSES][CH_CLASSES] = {
/* Table 3: Thaicat input sequence check rules */
/* row: leading char, column: following char */
/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
@@ -393,6 +418,7 @@ THAI_isaccepted (follow_ch, lead_ch, mode)
return iskeyvalid;
}
+#if 0
Private void
#if NeedFunctionPrototypes
THAI_apply_write_rules(
@@ -480,7 +506,7 @@ Output parameters:
}
return position;
}
-
+#endif
Private int
#if NeedFunctionPrototypes
@@ -526,15 +552,19 @@ THAI_apply_scm(instr, outstr, spec_ch, num_sp, insert_ch)
/* The following functions are copied from XKeyBind.c */
+#if 0
Private void ComputeMaskFromKeytrans();
+#endif
Private int IsCancelComposeKey();
Private void SetLed();
Private CARD8 FindKeyCode();
/* The following functions are specific to this module */
+#if 0
Private int XThaiTranslateKey();
Private int XThaiTranslateKeySym();
+#endif
Private KeySym HexIMNormalKey();
Private KeySym HexIMFirstComposeKey();
@@ -549,13 +579,121 @@ Private Bool ThaiComposeConvert();
#define BellVolume 0
+#define ucs2tis(wc) \
+ (unsigned char) ( \
+ (0<=(wc)&&(wc)<=0x7F) ? \
+ (wc) : \
+ ((0x0E01<=(wc)&&(wc)<=0x0E5F) ? ((wc)-0x0E00+0xA0) : 0))
+#define tis2ucs(c) \
+ ( \
+ ((c)<=0x7F) ? \
+ (wchar_t)(c) : \
+ ((0x0A1<=(c)&&(c)<=0x0FF) ? ((wchar_t)(c)-0xA0+0x0E00) : 0))
+
/*
* Macros to save and recall last input character in XIC
*/
#define IC_SavePreviousChar(ic,ch) \
- *((ic)->private.local.context->mb) = (char) (ch)
-#define IC_GetPreviousChar(ic,ch) \
- (ch) = (unsigned char) *((ic)->private.local.context->mb)
+ (*((ic)->private.local.context->mb) = (char) (ch))
+#define IC_ClearPreviousChar(ic) \
+ (*((ic)->private.local.context->mb) = 0)
+#define IC_GetPreviousChar(ic) \
+ (IC_RealGetPreviousChar(ic,1))
+#define IC_GetContextChar(ic) \
+ (IC_RealGetPreviousChar(ic,2))
+#define IC_DeletePreviousChar(ic) \
+ (IC_RealDeletePreviousChar(ic))
+
+Private unsigned char
+#if NeedFunctionPrototypes
+IC_RealGetPreviousChar(Xic ic, unsigned short pos)
+#else
+IC_RealGetPreviousChar(ic, pos)
+ Xic ic;
+ XIMStringConversionPosition pos;
+#endif
+{
+ XICCallback* cb = &ic->core.string_conversion_callback;
+
+ if (cb && cb->callback) {
+ XIMStringConversionCallbackStruct screc;
+ unsigned char c;
+
+ /* Use a safe value of position = 0 and stretch the range to desired
+ * place, as XIM protocol is unclear here whether it could be negative
+ */
+ screc.position = 0;
+ screc.direction = XIMBackwardChar;
+ screc.operation = XIMStringConversionRetrieval;
+ screc.factor = pos;
+ screc.text = 0;
+
+ (cb->callback)((XIC)ic, cb->client_data, (XPointer)&screc);
+ if (!screc.text)
+ return (unsigned char) *((ic)->private.local.context->mb);
+ if ((screc.text->feedback &&
+ *screc.text->feedback == XIMStringConversionLeftEdge) ||
+ screc.text->length < 1)
+ {
+ c = 0;
+ } else {
+ if (screc.text->encoding_is_wchar) {
+ c = ucs2tis(screc.text->string.wcs[0]);
+ XFree(screc.text->string.wcs);
+ } else {
+ c = screc.text->string.mbs[0];
+ XFree(screc.text->string.mbs);
+ }
+ }
+ XFree(screc.text);
+ return c;
+ } else {
+ return (unsigned char) *((ic)->private.local.context->mb);
+ }
+}
+
+Private unsigned char
+#if NeedFunctionPrototypes
+IC_RealDeletePreviousChar(Xic ic)
+#else
+IC_RealDeletePreviousChar(ic)
+ Xic ic;
+#endif
+{
+ XICCallback* cb = &ic->core.string_conversion_callback;
+
+ if (cb && cb->callback) {
+ XIMStringConversionCallbackStruct screc;
+ unsigned char c;
+
+ screc.position = 0;
+ screc.direction = XIMBackwardChar;
+ screc.operation = XIMStringConversionSubstitution;
+ screc.factor = 1;
+ screc.text = 0;
+
+ (cb->callback)((XIC)ic, cb->client_data, (XPointer)&screc);
+ if (!screc.text) { return 0; }
+ if ((screc.text->feedback &&
+ *screc.text->feedback == XIMStringConversionLeftEdge) ||
+ screc.text->length < 1)
+ {
+ c = 0;
+ } else {
+ if (screc.text->encoding_is_wchar) {
+ c = ucs2tis(screc.text->string.wcs[0]);
+ XFree(screc.text->string.wcs);
+ } else {
+ c = screc.text->string.mbs[0];
+ XFree(screc.text->string.mbs);
+ }
+ }
+ XFree(screc.text);
+ return c;
+ } else {
+ return 0;
+ }
+}
/*
* Input sequence check mode in XIC
*/
@@ -582,9 +720,9 @@ Private Bool ThaiComposeConvert();
#define IsISOControlKey(ks) ((ks) >= XK_2 && (ks) <= XK_8)
-#define IsValidControlKey(ks) (((ks)>=XK_A && (ks)<=XK_asciitilde || \
+#define IsValidControlKey(ks) (((((ks)>=XK_A && (ks)<=XK_asciitilde) || \
(ks)==XK_space || (ks)==XK_Delete) && \
- ((ks)!=0))
+ ((ks)!=0)))
#define COMPOSE_LED 2
@@ -613,16 +751,18 @@ typedef KeySym (*StateProc)();
!IsShift((event)->state)) \
? True : False)
+#if 0
/*
* State handler to implement the Thai hex input method.
*/
-Private int nstate_handlers = 3;
+Private int const nstate_handlers = 3;
Private StateProc state_handler[] = {
HexIMNormalKey,
HexIMFirstComposeKey,
HexIMSecondComposeKey
};
+#endif
/*
* Table for 'Thai Compose' character input.
@@ -633,7 +773,7 @@ struct _XMapThaiKey {
KeySym to;
};
-Private struct _XMapThaiKey ThaiComposeTable[] = {
+Private struct _XMapThaiKey const ThaiComposeTable[] = {
{ /* 0xa4 */ XK_currency, /* 0xa5 */ XK_yen },
{ /* 0xa2 */ XK_cent, /* 0xa3 */ XK_sterling },
{ /* 0xe6 */ XK_ae, /* 0xef */ XK_idiaeresis },
@@ -662,7 +802,7 @@ ThaiComposeConvert(dpy, insym, outsym ,lower, upper)
KeySym insym;
KeySym *outsym,*lower,*upper;
{
- struct _XMapThaiKey *table_entry = ThaiComposeTable;
+ struct _XMapThaiKey const *table_entry = ThaiComposeTable;
while (table_entry->from != XK_VoidSymbol) {
if (table_entry->from == insym) {
@@ -676,6 +816,7 @@ ThaiComposeConvert(dpy, insym, outsym ,lower, upper)
return False;
}
+#if 0
Private int
XThaiTranslateKey(dpy, keycode, modifiers, modifiers_return, keysym_return,
lsym_return, usym_return)
@@ -765,10 +906,10 @@ XThaiTranslateKeySym(dpy, symbol, lsym, usym, modifiers, buffer, nbytes)
Display *dpy;
register KeySym symbol, lsym, usym;
unsigned int modifiers;
- char *buffer;
+ unsigned char *buffer;
int nbytes;
{
- KeySym ckey;
+ KeySym ckey = 0;
register struct _XKeytrans *p;
int length;
unsigned long hiBytes;
@@ -863,6 +1004,7 @@ XThaiTranslateKeySym(dpy, symbol, lsym, usym, modifiers, buffer, nbytes)
return 1;
}
}
+#endif
/*
* given a KeySym, returns the first keycode containing it, if any.
@@ -885,7 +1027,7 @@ FindKeyCode(dpy, code)
return 0;
}
-
+#if 0
/*
* given a list of modifiers, computes the mask necessary for later matching.
* This routine must lookup the key in the Keymap and then search to see
@@ -919,7 +1061,7 @@ ComputeMaskFromKeytrans(dpy, p)
}
p->state &= AllMods;
}
-
+#endif
/************************************************************************
*
@@ -1071,7 +1213,7 @@ int IsCancelComposeKey(symbol, event)
#endif
IsPFKey (*symbol) ||
IsCursorKey (*symbol) ||
- *symbol >= XK_Tab && *symbol < XK_Multi_key
+ (*symbol >= XK_Tab && *symbol < XK_Multi_key)
? True : False); /* cancel compose sequence and pass */
/* cancelling key through */
}
@@ -1130,6 +1272,71 @@ Xic ic;
}
/*
+ * Helper functions for _XimThaiFilter()
+ */
+Private Bool
+#if NeedFunctionPrototypes
+ThaiFltAcceptInput(Xic ic, unsigned char new_char, KeySym symbol)
+#else
+ThaiFltAcceptInput(ic, new_char, symbol)
+ Xic ic;
+ unsigned char new_char;
+ KeySym symbol;
+#endif
+{
+ ic->private.local.composed->wc[0] = tis2ucs(new_char);
+ ic->private.local.composed->wc[1] = '\0';
+
+ if ((new_char <= 0x1f) || (new_char == 0x7f))
+ ic->private.local.composed->keysym = symbol;
+ else
+ ic->private.local.composed->keysym = NoSymbol;
+
+ return True;
+}
+
+Private Bool
+#if NeedFunctionPrototypes
+ThaiFltReorderInput(Xic ic, unsigned char previous_char, unsigned char new_char)
+#else
+ThaiFltReorderInput(ic, previous_char, new_char)
+ Xic ic;
+ unsigned char previous_char, new_char;
+#endif
+{
+ if (!IC_DeletePreviousChar(ic)) return False;
+ ic->private.local.composed->wc[0] = tis2ucs(new_char);
+ ic->private.local.composed->wc[1] = tis2ucs(previous_char);
+ ic->private.local.composed->wc[2] = '\0';
+
+ ic->private.local.composed->keysym = NoSymbol;
+
+ return True;
+}
+
+Private Bool
+#if NeedFunctionPrototypes
+ThaiFltReplaceInput(Xic ic, unsigned char new_char, KeySym symbol)
+#else
+ThaiFltReplaceInput(ic, new_char, symbol)
+ Xic ic;
+ unsigned char new_char;
+ KeySym symbol;
+#endif
+{
+ if (!IC_DeletePreviousChar(ic)) return False;
+ ic->private.local.composed->wc[0] = tis2ucs(new_char);
+ ic->private.local.composed->wc[1] = '\0';
+
+ if ((new_char <= 0x1f) || (new_char == 0x7f))
+ ic->private.local.composed->keysym = symbol;
+ else
+ ic->private.local.composed->keysym = NoSymbol;
+
+ return True;
+}
+
+/*
* Filter function for TACTIS
*/
Bool
@@ -1140,16 +1347,20 @@ XEvent *ev;
XPointer client_data;
{
Xic ic = (Xic)client_data;
- unsigned int modifiers;
KeySym symbol;
- KeySym lsym,usym;
- int count;
+ int wcount;
int isc_mode; /* Thai Input Sequence Check mode */
unsigned char previous_char; /* Last inputted Thai char */
+ unsigned char new_char;
+#if 0
+ unsigned int modifiers;
+ KeySym lsym,usym;
int state;
XicThaiPart *thai_part;
char buf[10];
- int i;
+#endif
+ wchar_t wbuf[10];
+ Bool isReject;
if ((ev->type != KeyPress)
|| (ev->xkey.keycode == 0))
@@ -1157,6 +1368,37 @@ XPointer client_data;
if (!IC_IscMode(ic)) InitIscMode(ic);
+ wcount = XwcLookupString((XIC)ic, &ev->xkey,
+ wbuf, sizeof(wbuf)/sizeof(wbuf[0]), &symbol, NULL);
+
+ if ((ev->xkey.state & (AllMods & ~ShiftMask)) ||
+ ((symbol >> 8 == 0xFF) &&
+ ((XK_BackSpace <= symbol && symbol <= XK_Clear) ||
+ (symbol == XK_Return) ||
+ (symbol == XK_Pause) ||
+ (symbol == XK_Scroll_Lock) ||
+ (symbol == XK_Sys_Req) ||
+ (symbol == XK_Escape) ||
+ (symbol == XK_Delete) ||
+ IsCursorKey(symbol) ||
+ IsKeypadKey(symbol) ||
+ IsMiscFunctionKey(symbol) ||
+ IsFunctionKey(symbol))))
+ {
+ IC_ClearPreviousChar(ic);
+ return False;
+ }
+ if (((symbol >> 8 == 0xFF) &&
+ IsModifierKey(symbol)) ||
+#ifdef XK_XKB_KEYS
+ ((symbol >> 8 == 0xFE) &&
+ (XK_ISO_Lock <= symbol && symbol <= XK_ISO_Last_Group_Lock)) ||
+#endif
+ (symbol == NoSymbol))
+ {
+ return False;
+ }
+#if 0
if (! XThaiTranslateKey(ev->xkey.display, ev->xkey.keycode, ev->xkey.state,
&modifiers, &symbol, &lsym, &usym))
return False;
@@ -1184,31 +1426,54 @@ XPointer client_data;
/* Return symbol if cannot convert to character */
if (!count)
return False;
+#endif
/*
* Thai Input sequence check
*/
isc_mode = IC_IscMode(ic);
- if ((IC_GetPreviousChar(ic, previous_char))) {
- if (!THAI_isaccepted(buf[0],previous_char, isc_mode)) {
- /* reject character */
- XBell(ev->xkey.display, BellVolume);
- return True;
+ if (!(previous_char = IC_GetPreviousChar(ic))) previous_char = ' ';
+ new_char = ucs2tis(wbuf[0]);
+ isReject = True;
+ if (THAI_isaccepted(new_char, previous_char, isc_mode)) {
+ ThaiFltAcceptInput(ic, new_char, symbol);
+ isReject = False;
+ } else {
+ unsigned char context_char;
+
+ context_char = IC_GetContextChar(ic);
+ if (context_char) {
+ if (THAI_iscomposible(new_char, context_char)) {
+ if (THAI_iscomposible(previous_char, new_char)) {
+ isReject = !ThaiFltReorderInput(ic, previous_char, new_char);
+ } else if (THAI_iscomposible(previous_char, context_char)) {
+ isReject = !ThaiFltReplaceInput(ic, new_char, symbol);
+ } else if (THAI_chtype(previous_char) == FV1
+ && THAI_chtype(new_char) == TONE) {
+ isReject = !ThaiFltReorderInput(ic, previous_char, new_char);
+ }
+ } else if (THAI_isaccepted(new_char, context_char, isc_mode)) {
+ isReject = !ThaiFltReplaceInput(ic, new_char, symbol);
+ }
}
}
- /* Remember the last character inputted. */
- IC_SavePreviousChar(ic, buf[count-1]);
- for (i=0; i<count; i++)
- ic->private.local.composed->mb[i] = buf[i];
- ic->private.local.composed->mb[count] = '\0';
-
- i = _Xlcmbstowcs(ic->core.im->core.lcd, ic->private.local.composed->wc,
- ic->private.local.composed->mb, count);
-
- if (!((buf[0] > 0 && buf[0] <= 0x1f) || (buf[0] == 0) || (buf[0] == 0x7f)))
- ic->private.local.composed->keysym = NoSymbol;
- else
- ic->private.local.composed->keysym = symbol;
+ if (isReject) {
+ /* reject character */
+ XBell(ev->xkey.display, BellVolume);
+ return True;
+ }
+
+ _Xlcwcstombs(ic->core.im->core.lcd, ic->private.local.composed->mb,
+ ic->private.local.composed->wc, 10);
+
+ _Xlcmbstoutf8(ic->core.im->core.lcd, ic->private.local.composed->utf8,
+ ic->private.local.composed->mb, 10);
+
+ /* Remember the last character inputted
+ * (as fallback in case StringConversionCallback is not provided)
+ */
+ IC_SavePreviousChar(ic, new_char);
+
ev->xkey.keycode = 0;
XPutBackEvent(d, ev);
return True;
diff --git a/modules/im/ximcp/imThaiIc.c b/modules/im/ximcp/imThaiIc.c
index bead0285..711654f5 100644
--- a/modules/im/ximcp/imThaiIc.c
+++ b/modules/im/ximcp/imThaiIc.c
@@ -32,6 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/imThaiIc.c,v 1.4 2001/01/17 19:41:52 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -68,9 +69,11 @@ _XimThaiDestroyIC(xic)
Xfree(ic->private.local.context->mb);
Xfree(ic->private.local.context->wc);
+ Xfree(ic->private.local.context->utf8);
Xfree(ic->private.local.context);
Xfree(ic->private.local.composed->mb);
Xfree(ic->private.local.composed->wc);
+ Xfree(ic->private.local.composed->utf8);
Xfree(ic->private.local.composed);
return;
}
@@ -96,8 +99,8 @@ _XimThaiSetFocus(xic)
return;
}
-Private char *
-_XimThaiMbReset(xic)
+Private void
+_XimThaiReset(xic)
XIC xic;
{
Xic ic = (Xic)xic;
@@ -105,19 +108,23 @@ _XimThaiMbReset(xic)
ic->private.local.thai.keysym = 0;
ic->private.local.composed->mb[0] = '\0';
ic->private.local.composed->wc[0] = 0;
- return((char *)NULL);
+ ic->private.local.composed->utf8[0] = '\0';
+}
+
+Private char *
+_XimThaiMbReset(xic)
+ XIC xic;
+{
+ _XimThaiReset(xic);
+ return (char *)NULL;
}
Private wchar_t *
_XimThaiWcReset(xic)
XIC xic;
{
- Xic ic = (Xic)xic;
- ic->private.local.thai.comp_state = 0;
- ic->private.local.thai.keysym = 0;
- ic->private.local.composed->mb[0] = '\0';
- ic->private.local.composed->wc[0] = 0;
- return((wchar_t *)NULL);
+ _XimThaiReset(xic);
+ return (wchar_t *)NULL;
}
Private XICMethodsRec Thai_ic_methods = {
@@ -128,8 +135,10 @@ Private XICMethodsRec Thai_ic_methods = {
_XimLocalGetICValues, /* get_values */
_XimThaiMbReset, /* mb_reset */
_XimThaiWcReset, /* wc_reset */
+ _XimThaiMbReset, /* utf8_reset */
_XimLocalMbLookupString, /* mb_lookup_string */
_XimLocalWcLookupString, /* wc_lookup_string */
+ _XimLocalUtf8LookupString /* utf8_lookup_string */
};
XIC
@@ -160,6 +169,9 @@ _XimThaiCreateIC(im, values)
if ((ic->private.local.context->wc = (wchar_t *)Xmalloc(10*sizeof(wchar_t)))
== (wchar_t *)NULL)
goto Set_Error;
+ if ((ic->private.local.context->utf8 = (char *)Xmalloc(10))
+ == (char *)NULL)
+ goto Set_Error;
if ((ic->private.local.composed = (DefTree *)Xmalloc(sizeof(DefTree)))
== (DefTree *)NULL)
goto Set_Error;
@@ -169,6 +181,9 @@ _XimThaiCreateIC(im, values)
if ((ic->private.local.composed->wc = (wchar_t *)Xmalloc(10*sizeof(wchar_t)))
== (wchar_t *)NULL)
goto Set_Error;
+ if ((ic->private.local.composed->utf8 = (char *)Xmalloc(10))
+ == (char *)NULL)
+ goto Set_Error;
ic->private.local.thai.comp_state = 0;
ic->private.local.thai.keysym = 0;
diff --git a/modules/im/ximcp/imThaiIm.c b/modules/im/ximcp/imThaiIm.c
index faa8d846..23d3a8e8 100644
--- a/modules/im/ximcp/imThaiIm.c
+++ b/modules/im/ximcp/imThaiIm.c
@@ -32,6 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/imThaiIm.c,v 1.8 2002/09/21 02:46:04 dawes Exp $ */
#include <stdio.h>
#include <X11/Xlib.h>
@@ -41,6 +42,7 @@ THIS SOFTWARE.
#include "Xlibint.h"
#include "Xlcint.h"
#include "XlcPublic.h"
+#include "XlcPubI.h"
#include "Ximint.h"
Private XIMMethodsRec Xim_im_thai_methods = {
@@ -49,7 +51,8 @@ Private XIMMethodsRec Xim_im_thai_methods = {
_XimLocalGetIMValues, /* get_values */
_XimThaiCreateIC, /* create_ic */
_XimLcctstombs, /* ctstombs */
- _XimLcctstowcs /* ctstowcs */
+ _XimLcctstowcs, /* ctstowcs */
+ _XimLcctstoutf8 /* ctstoutf8 */
};
#define THAI_LANGUAGE_NAME "th"
@@ -72,9 +75,9 @@ _XimThaiOpenIM(im)
Xim im;
{
XLCd lcd = im->core.lcd;
- XlcConv ctom_conv;
- XlcConv ctow_conv;
+ XlcConv conv;
XimDefIMValues im_values;
+ XimLocalPrivateRec* private = &im->private.local;
_XimInitialResourceInfo();
if(_XimSetIMResourceList(&im->core.im_resources,
@@ -95,47 +98,45 @@ _XimThaiOpenIM(im)
}
_XimSetCurrentIMValues(im, &im_values);
- if (!(ctom_conv = _XlcOpenConverter(lcd,
- XlcNCompoundText, lcd, XlcNMultiByte)))
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte)))
goto Open_Error;
- if (!(ctow_conv = _XlcOpenConverter(lcd,
- XlcNCompoundText, lcd, XlcNWideChar)))
+ private->ctom_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar)))
+ goto Open_Error;
+ private->ctow_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ctoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
+ goto Open_Error;
+ private->cstomb_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNWideChar)))
+ goto Open_Error;
+ private->cstowc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ goto Open_Error;
+ private->ucstoc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String)))
goto Open_Error;
+ private->ucstoutf8_conv = conv;
im->methods = &Xim_im_thai_methods;
- im->private.local.current_ic = (XIC)NULL;
- im->private.local.ctom_conv = ctom_conv;
- im->private.local.ctow_conv = ctow_conv;
+ private->current_ic = (XIC)NULL;
return(True);
Open_Error :
- if (im->core.im_resources) {
- Xfree(im->core.im_resources);
- im->core.im_resources = NULL;
- }
- if (im->core.ic_resources) {
- Xfree(im->core.ic_resources);
- im->core.ic_resources = NULL;
- }
- if (im->core.im_values_list) {
- Xfree(im->core.im_values_list);
- im->core.im_values_list = NULL;
- }
- if (im->core.ic_values_list) {
- Xfree(im->core.ic_values_list);
- im->core.ic_values_list = NULL;
- }
- if (im->core.styles) {
- Xfree(im->core.styles);
- im->core.styles = NULL;
- }
- if (im->private.local.ctom_conv) {
- _XlcCloseConverter(im->private.local.ctom_conv);
- }
- if (im->private.local.ctow_conv) {
- _XlcCloseConverter(im->private.local.ctow_conv);
- }
+ _XimThaiIMFree(im);
return(False);
}
@@ -175,6 +176,38 @@ _XimThaiIMFree(im)
Xfree(im->core.im_name);
im->core.im_name = NULL;
}
+ if (im->private.local.ctom_conv) {
+ _XlcCloseConverter(im->private.local.ctom_conv);
+ im->private.local.ctom_conv = NULL;
+ }
+ if (im->private.local.ctow_conv) {
+ _XlcCloseConverter(im->private.local.ctow_conv);
+ im->private.local.ctow_conv = NULL;
+ }
+ if (im->private.local.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ctoutf8_conv);
+ im->private.local.ctoutf8_conv = NULL;
+ }
+ if (im->private.local.cstomb_conv) {
+ _XlcCloseConverter(im->private.local.cstomb_conv);
+ im->private.local.cstomb_conv = NULL;
+ }
+ if (im->private.local.cstowc_conv) {
+ _XlcCloseConverter(im->private.local.cstowc_conv);
+ im->private.local.cstowc_conv = NULL;
+ }
+ if (im->private.local.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.cstoutf8_conv);
+ im->private.local.cstoutf8_conv = NULL;
+ }
+ if (im->private.local.ucstoc_conv) {
+ _XlcCloseConverter(im->private.local.ucstoc_conv);
+ im->private.local.ucstoc_conv = NULL;
+ }
+ if (im->private.local.ucstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ucstoutf8_conv);
+ im->private.local.ucstoutf8_conv = NULL;
+ }
return;
}
@@ -187,6 +220,7 @@ _XimThaiCloseIM(xim)
XIC next;
ic = im->core.ic_chain;
+ im->core.ic_chain = NULL;
while (ic) {
(*ic->methods->destroy) (ic);
next = ic->core.next;
diff --git a/modules/im/ximcp/imTrX.c b/modules/im/ximcp/imTrX.c
index 01bc8286..9386d8fd 100644
--- a/modules/im/ximcp/imTrX.c
+++ b/modules/im/ximcp/imTrX.c
@@ -28,6 +28,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imTrX.c,v 1.2 2002/11/26 01:21:25 dawes Exp $ */
#include <string.h>
#include <X11/Xatom.h>
@@ -340,8 +341,15 @@ _XimXGetReadData(im, buf, buf_len, ret_len, event)
unsigned long bytes_after_ret;
unsigned char *prop_ret;
- if ((event->type == ClientMessage) && (event->xclient.format == 8)) {
- data = event->xclient.data.b;
+ if ((event->type == ClientMessage) &&
+ !((event->xclient.message_type == spec->improtocolid) ||
+ (event->xclient.message_type == spec->immoredataid))) {
+ /* This event has nothing to do with us,
+ * FIXME should not have gotten here then...
+ */
+ return False;
+ } else if ((event->type == ClientMessage) && (event->xclient.format == 8)) {
+ data = event->xclient.data.b;
if (buf_len >= XIM_CM_DATA_SIZE) {
(void)memcpy(buf, data, XIM_CM_DATA_SIZE);
*ret_len = XIM_CM_DATA_SIZE;
diff --git a/modules/im/ximcp/imTransR.c b/modules/im/ximcp/imTransR.c
index 01681bf6..016c5e47 100644
--- a/modules/im/ximcp/imTransR.c
+++ b/modules/im/ximcp/imTransR.c
@@ -28,6 +28,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/imTransR.c,v 3.4 2001/01/17 19:41:52 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -35,21 +36,21 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "Ximint.h"
Public TransportSW _XimTransportRec[] = {
- "X", _XimXConf, /* 1st entry must be X.
+ { "X", _XimXConf }, /* 1st entry must be X.
This will be a fallback */
#ifdef TCPCONN
- "tcp", _XimTransConf, /* use X transport lib */
+ { "tcp", _XimTransConf }, /* use X transport lib */
#endif /* TCPCONN */
-#ifdef UNIXCONN
- "local", _XimTransConf, /* use X transport lib */
+#if defined(UNIXCONN) || defined(LOCALCONN)
+ { "local", _XimTransConf }, /* use X transport lib */
#endif /* UNIXCONN */
#ifdef DNETCONN
- "dnet", _XimTransConf, /* use X transport lib */
+ { "dnet", _XimTransConf }, /* use X transport lib */
#endif /* DNETCONN */
#ifdef STREAMSCONN
- "streams", _XimTransConf, /* use X transport lib */
+ { "streams", _XimTransConf }, /* use X transport lib */
#endif /* STREAMSCONN */
- (char *)NULL, (Bool (*)())NULL,
+ { (char *)NULL, (Bool (*)())NULL },
};
Public Bool
diff --git a/modules/lc/Utf8/lcUTF8Load.c b/modules/lc/Utf8/lcUTF8Load.c
new file mode 100644
index 00000000..e4fffac0
--- /dev/null
+++ b/modules/lc/Utf8/lcUTF8Load.c
@@ -0,0 +1,61 @@
+/* $TOG: $ */
+/******************************************************************
+
+ Copyright 1993 by SunSoft, Inc.
+ Copyright 1999-2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
+FOR 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 THIS SOFTWARE.
+
+******************************************************************/
+/* $XFree86: xc/lib/X11/lcUTF8Load.c,v 1.1 2001/11/16 14:40:46 dawes Exp $ */
+
+/*
+ * This file contains the UTF-8 locale loader.
+ * Supports: all locales with codeset UTF-8.
+ * Platforms: all systems.
+ */
+
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include "XlcGeneric.h"
+
+XLCd
+_XlcUtf8Loader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == (XLCd) NULL)
+ return lcd;
+
+ /* The official IANA name for UTF-8 is "UTF-8" in upper case with a dash. */
+ if (!XLC_PUBLIC_PART(lcd)->codeset ||
+ (_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8"))) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ _XlcAddUtf8LocaleConverters(lcd);
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
diff --git a/modules/lc/def/lcDefConv.c b/modules/lc/def/lcDefConv.c
index 156bbe1a..cbcf087f 100644
--- a/modules/lc/def/lcDefConv.c
+++ b/modules/lc/def/lcDefConv.c
@@ -23,206 +23,544 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/*
+ * 2000
+ * Modifier: Ivan Pascal The XFree86 Project
+ */
+/* $XFree86: xc/lib/X11/lcDefConv.c,v 1.7 2001/07/25 15:04:45 dawes Exp $ */
+
+/*
+ * The default locale loader.
+ * Supports: one byte per char (iso8859 like) locales.
+ * How: converts bytes to wide characters in a 1:1 manner.
+ * Platforms: all systems.
+ */
#include "Xlibint.h"
-#include "XlcPubI.h"
+#include "XlcGeneric.h"
+
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 6
+#endif
+#if !defined(macII) && !defined(Lynx_22) && !defined(X_LOCALE)
+#define STDCVT
+#endif
+
+#define GR 0x80
+#define GL 0x7f
+
+typedef struct _StateRec *State;
typedef struct _StateRec {
- XlcCharSet charset;
- XlcCharSet GL_charset;
- XlcCharSet GR_charset;
- XlcConv ct_conv;
- int (*to_converter)();
-} StateRec, *State;
+ CodeSet GL_codeset;
+ CodeSet GR_codeset;
+ wchar_t wc_mask;
+ wchar_t wc_encode_mask;
+ Bool (*MBtoWC) (State state, const char *ch, wchar_t *wc);
+ Bool (*WCtoMB) (State state, wchar_t wc, char *ch);
+} StateRec;
+
+static
+Bool MBtoWCdef(
+ State state,
+ const char *ch,
+ wchar_t *wc)
+{
+ wchar_t wc_encoding;
+ CodeSet codeset = (*ch & GR) ? state->GR_codeset : state->GL_codeset;
+ if (!codeset)
+ return False;
+ wc_encoding = codeset->wc_encoding;
+ *wc = ((wchar_t) *ch & state->wc_mask) | wc_encoding;
+ return True;
+}
+
+#ifdef STDCVT
+static
+Bool MBtoWCstd(
+ State state,
+ const char *ch,
+ wchar_t *wc)
+{
+ return (mbtowc(wc, ch, 1) == 1);
+}
+#endif
+
+static
+Bool WCtoMBdef(
+ State state,
+ wchar_t wc,
+ char *ch)
+{
+ wchar_t wc_encoding = wc & state->wc_encode_mask;
+ CodeSet codeset;
+
+ codeset = state->GL_codeset;
+ if (codeset && (wc_encoding == codeset->wc_encoding)) {
+ *ch = wc & state->wc_mask;
+ return True;
+ }
+ codeset = state->GR_codeset;
+ if (codeset && (wc_encoding == codeset->wc_encoding)) {
+ *ch = (wc & state->wc_mask) | GR;
+ return True;
+ }
+ return False;
+}
+
+#ifdef STDCVT
+static
+Bool WCtoMBstd(
+ State state,
+ wchar_t wc,
+ char *ch)
+{
+ return (wctomb(ch, wc) == 1);
+}
+#endif
+
+static
+XlcCharSet get_charset(
+ State state,
+ char side)
+{
+ CodeSet codeset = side ? state->GR_codeset : state->GL_codeset;
+ if (codeset) {
+ int i;
+ XlcCharSet charset;
+ for (i = 0; i < codeset->num_charsets; i++) {
+ charset = codeset->charset_list[i];
+ if (*charset->ct_sequence != '\0')
+ return charset;
+ }
+ return *(codeset->charset_list);
+ }
+ return (XlcCharSet) NULL;
+}
static int
-strtostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+def_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src, *dst;
- unsigned char side;
- register int length;
+ const char *src = (const char *) *from;
+ wchar_t *dst = (wchar_t *) * to;
+ State state = (State) conv->state;
+ int unconv = 0;
if (from == NULL || *from == NULL)
return 0;
- src = (char *) *from;
- dst = (char *) *to;
+ while (*from_left && *to_left) {
+ (*from_left)--;
+ if (state->MBtoWC (state, src++, dst)) {
+ dst++;
+ (*to_left)--;
+ } else {
+ unconv++;
+ }
+ }
+ *from = (XPointer) src;
+ *to = (XPointer) dst;
+ return unconv;
+}
- length = min(*from_left, *to_left);
+static int
+def_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *src = (const wchar_t *) * from;
+ char *dst = (char *) *to;
+ State state = (State) conv->state;
+ char ch[MB_LEN_MAX];
+ int unconv = 0;
- if (num_args > 0) {
- side = (length > 0) ? *((unsigned char *) src) & 0x80 : 0;
- while (length-- > 0 && side == (*((unsigned char *) src) & 0x80))
- *dst++ = *src++;
- } else {
- while (length-- > 0)
- *dst++ = *src++;
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ while (*from_left && *to_left) {
+ (*from_left)--;
+ if (state->WCtoMB (state, *src++, ch)) {
+ *dst++ = *ch;
+ (*to_left)--;
+ } else {
+ unconv++;
+ }
}
-
- *from_left -= src - (char *) *from;
*from = (XPointer) src;
- *to_left -= dst - (char *) *to;
*to = (XPointer) dst;
+ return unconv;
+}
- if (num_args > 0) {
- State state = (State) conv->state;
+static int
+mbstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
+ CodeSet codeset;
+ State state = (State) conv->state;
+ char ch;
+ int unconv = 0;
- *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset;
- }
+ if (from == NULL || *from == NULL)
+ return 0;
- return 0;
+ while (*from_left && *to_left) {
+ ch = *src++;
+ (*from_left)--;
+
+ codeset = (ch & GR) ? state->GR_codeset : state->GL_codeset;
+ if (codeset && codeset->string_encoding) {
+ *dst++ = ch;
+ (*to_left)--;
+ } else {
+ unconv++;
+ }
+ }
+ *from = (XPointer) src;
+ *to = (XPointer) dst;
+ return unconv;
}
static int
-wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register wchar_t *src, side;
- register char *dst;
- register int length;
+ const wchar_t *src = (const wchar_t *) *from;
+ char *dst = (char *) *to;
+ CodeSet codeset;
+ State state = (State) conv->state;
+ char ch[MB_LEN_MAX];
+ int unconv = 0;
if (from == NULL || *from == NULL)
return 0;
- src = (wchar_t *) *from;
- dst = (char *) *to;
+ while (*from_left && *to_left) {
+ (*from_left)--;
+ if (state->WCtoMB (state, *src++, ch)) {
+ codeset = (*ch & GR) ? state->GR_codeset : state->GL_codeset;
+ if (codeset && codeset->string_encoding) {
+ *dst++ = *ch;
+ (*to_left)--;
+ } else {
+ unconv++;
+ }
+ } else {
+ unconv++;
+ }
+ }
+ *from = (XPointer) src;
+ *to = (XPointer) dst;
+ return unconv;
+}
+
+static int
+mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
+ int length;
+ State state = (State) conv->state;
+ char cur_side;
+ int unconv = 0;
+
+ if (from == NULL || *from == NULL)
+ return 0;
length = min(*from_left, *to_left);
+ cur_side = *src & GR;
+ while (length) {
+ if ((char) (*src & GR) != cur_side)
+ break;
+ *dst++ = *src++;
+ length--;
+ }
+
if (num_args > 0) {
- side = (length > 0) ? *src & 0x80 : 0;
- while (length-- > 0 && side == (*src & 0x80))
- *dst++ = *src++;
- } else {
- while (length-- > 0)
- *dst++ = *src++;
+ XlcCharSet charset = get_charset(state, cur_side);
+ if (charset) {
+ *((XlcCharSet *) args[0]) = charset;
+ } else {
+ dst = *to;
+ unconv = -1;
+ }
}
-
- *from_left -= src - (wchar_t *) *from;
- *from = (XPointer) src;
+ *from_left -= src - (char *) *from;
*to_left -= dst - (char *) *to;
+ *from = (XPointer) src;
*to = (XPointer) dst;
+ return unconv;
+}
- if (num_args > 0) {
- State state = (State) conv->state;
+static int
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *src = (const wchar_t *) * from;
+ char *dst = (char *) *to;
+ State state = (State) conv->state;
+ char cur_side = 0, ch[MB_LEN_MAX];
+ int unconv = 0;
+ Bool found = False;
- *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset;
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ while (*from_left) {
+ if ((found = state->WCtoMB (state, *src, ch)))
+ break;
+ unconv++;
+ src++;
+ (*from_left)--;
}
- return 0;
+ if (found) {
+ cur_side = *ch & GR;
+ while (*from_left && *to_left) {
+ (*from_left)--;
+ if (state->WCtoMB (state, *src++, ch)) {
+ if ((char) (*ch & GR) != cur_side) {
+ src--;
+ (*from_left)++;
+ break;
+ } else {
+ *dst++ = *ch;
+ (*to_left)--;
+ }
+ } else {
+ unconv++;
+ }
+ }
+ } else {
+ unconv++;
+ }
+
+ if (num_args > 0) {
+ XlcCharSet charset = get_charset(state, cur_side);
+ if (charset) {
+ *((XlcCharSet *) args[0]) = charset;
+ } else {
+ unconv = -1;
+ }
+ }
+ *from = (XPointer) src;
+ *to = (XPointer) dst;
+ return unconv;
}
static int
-cstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src, *dst;
- unsigned char side;
- register int length;
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
+ CodeSet codeset;
+ XlcCharSet charset;
+ State state = (State) conv->state;
+ unsigned char cur_side = 0;
+ int i;
+ Bool found = False;
if (from == NULL || *from == NULL)
return 0;
if (num_args > 0) {
- State state = (State) conv->state;
- XlcCharSet charset = (XlcCharSet) args[0];
-
- if (charset != state->GL_charset && charset != state->GR_charset)
+ charset = (XlcCharSet) args[0];
+ if (charset == NULL)
return -1;
+ } else {
+ return -1;
}
- src = (char *) *from;
- dst = (char *) *to;
-
- length = min(*from_left, *to_left);
-
- if (num_args > 0) {
- side = (length > 0) ? *((unsigned char *) src) & 0x80 : 0;
- while (length-- > 0 && side == (*((unsigned char *) src) & 0x80))
- *dst++ = *src++;
+ if ((charset->side == XlcGL) || (charset->side == XlcGLGR)) {
+ codeset = state->GL_codeset;
+ if (codeset) {
+ for (i = 0; i < codeset->num_charsets; i++)
+ if (charset == codeset->charset_list[i]) {
+ found = True;
+ cur_side = 0;
+ break;
+ }
+ }
+ }
+ if (!found && ((charset->side == XlcGR) || (charset->side == XlcGLGR))) {
+ codeset = state->GR_codeset;
+ if (codeset) {
+ for (i = 0; i < codeset->num_charsets; i++)
+ if (charset == codeset->charset_list[i]) {
+ found = True;
+ cur_side = GR;
+ break;
+ }
+ }
+ }
+ if (found) {
+ int length = min(*from_left, *to_left);
+ while (length) {
+ *dst++ = *src++ | cur_side;
+ length--;
+ }
} else {
- while (length-- > 0)
- *dst++ = *src++;
+ return -1;
}
-
+
*from_left -= src - (char *) *from;
- *from = (XPointer) src;
*to_left -= dst - (char *) *to;
+ *from = (XPointer) src;
*to = (XPointer) dst;
-
- if (num_args > 0) {
- State state = (State) conv->state;
-
- *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset;
- }
-
return 0;
}
static int
-strtowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register char *src;
- register wchar_t *dst;
- register int length;
+ const char *src = (const char *) *from;
+ wchar_t *dst = (wchar_t *) * to;
+ CodeSet codeset;
+ XlcCharSet charset;
+ State state = (State) conv->state;
+ Bool found = False;
+ int i, unconv = 0;
+ unsigned char cur_side = 0;
if (from == NULL || *from == NULL)
return 0;
if (num_args > 0) {
- State state = (State) conv->state;
- XlcCharSet charset = (XlcCharSet) args[0];
-
- if (charset != state->GL_charset && charset != state->GR_charset)
+ charset = (XlcCharSet) args[0];
+ if (charset == NULL)
return -1;
+ } else {
+ return -1;
+ }
+
+ if ((charset->side == XlcGL) || (charset->side == XlcGLGR)) {
+ codeset = state->GL_codeset;
+ if (codeset) {
+ for (i = 0; i < codeset->num_charsets; i++)
+ if (charset == codeset->charset_list[i]) {
+ found = True;
+ cur_side = 0;
+ break;
+ }
+ }
}
+ if (!found && ((charset->side == XlcGR) || (charset->side == XlcGLGR))) {
+ codeset = state->GR_codeset;
+ if (codeset) {
+ for (i = 0; i < codeset->num_charsets; i++)
+ if (charset == codeset->charset_list[i]) {
+ found = True;
+ cur_side = GR;
+ break;
+ }
+ }
+ }
+ if (found) {
+ char ch;
+ while (*from_left && *to_left) {
+ ch = *src++ | cur_side;
+ (*from_left)--;
+ if (state->MBtoWC (state, &ch, dst)) {
+ dst++;
+ (*to_left)--;
+ } else {
+ unconv++;
+ }
+ }
+ } else {
+ return -1;
+ }
+ *from = (XPointer) src;
+ *to = (XPointer) dst;
+ return unconv;
+}
- src = (char *) *from;
- dst = (wchar_t *) *to;
+static int
+strtombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *src = (const char *) *from;
+ char *dst = (char *) *to;
+ int length;
+
+ if (from == NULL || *from == NULL)
+ return 0;
length = min(*from_left, *to_left);
+ while (length) {
+ *dst++ = *src++;
+ length--;
+ }
- while (length-- > 0)
- *dst++ = (wchar_t) *src++;
-
*from_left -= src - (char *) *from;
+ *to_left -= dst - (char *) *to;
*from = (XPointer) src;
- *to_left -= dst - (wchar_t *) *to;
*to = (XPointer) dst;
-
return 0;
}
-
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
if (conv->state)
Xfree((char *) conv->state);
@@ -231,132 +569,222 @@ close_converter(conv)
}
static XlcConv
-create_conv(methods)
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
- register XlcConv conv;
+ XlcConv conv;
State state;
- static XlcCharSet GL_charset = NULL;
- static XlcCharSet GR_charset = NULL;
-
- if (GL_charset == NULL) {
- GL_charset = _XlcGetCharSet("ISO8859-1:GL");
- GR_charset = _XlcGetCharSet("ISO8859-1:GR");
- }
conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
if (conv == NULL)
return (XlcConv) NULL;
state = (State) Xmalloc(sizeof(StateRec));
- if (state == NULL)
- goto err;
-
- state->GL_charset = state->charset = GL_charset;
- state->GR_charset = GR_charset;
+ if (state == NULL) {
+ close_converter(conv);
+ return (XlcConv) NULL;
+ }
+ state->GL_codeset = XLC_GENERIC(lcd, initial_state_GL);
+ state->GR_codeset = XLC_GENERIC(lcd, initial_state_GR);
+ state->wc_mask = (1 << XLC_GENERIC(lcd, wc_shift_bits)) - 1;
+ state->wc_encode_mask = XLC_GENERIC(lcd, wc_encode_mask);
+
+#ifdef STDCVT
+ if (XLC_GENERIC(lcd, use_stdc_env) == True)
+ state->MBtoWC = &MBtoWCstd;
+ else
+#endif
+ state->MBtoWC = &MBtoWCdef;
+
+#ifdef STDCVT
+ if (XLC_GENERIC(lcd, use_stdc_env) == True)
+ state->WCtoMB = &WCtoMBstd;
+ else
+#endif
+ state->WCtoMB = &WCtoMBdef;
conv->methods = methods;
conv->state = (XPointer) state;
return conv;
+}
-err:
- close_converter(conv);
+static XlcConvMethodsRec mbstowcs_methods = {
+ close_converter,
+ def_mbstowcs,
+ NULL
+};
- return (XlcConv) NULL;
+static XlcConv
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &mbstowcs_methods);
}
-static XlcConvMethodsRec strtostr_methods = {
+static XlcConvMethodsRec mbstostr_methods = {
close_converter,
- strtostr,
+ mbstostr,
NULL
-} ;
+};
static XlcConv
-open_strtostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
- return create_conv(&strtostr_methods);
+ return create_conv(from_lcd, &mbstostr_methods);
+}
+
+static XlcConvMethodsRec mbstocs_methods = {
+ close_converter,
+ mbstocs,
+ NULL
+};
+
+static XlcConv
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &mbstocs_methods);
+}
+
+static XlcConvMethodsRec wcstombs_methods = {
+ close_converter,
+ def_wcstombs,
+ NULL
+};
+
+static XlcConv
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &wcstombs_methods);
}
static XlcConvMethodsRec wcstostr_methods = {
close_converter,
wcstostr,
NULL
-} ;
+};
+
+static XlcConv
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &wcstostr_methods);
+}
+
+static XlcConvMethodsRec wcstocs_methods = {
+ close_converter,
+ wcstocs,
+ NULL
+};
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &wcstocs_methods);
+}
+
+static XlcConvMethodsRec strtombs_methods = {
+ close_converter,
+ strtombs,
+ NULL
+};
static XlcConv
-open_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
- return create_conv(&wcstostr_methods);
+ return create_conv(from_lcd, &strtombs_methods);
}
-static XlcConvMethodsRec cstostr_methods = {
+static XlcConvMethodsRec cstombs_methods = {
close_converter,
- cstostr,
+ cstombs,
NULL
-} ;
+};
static XlcConv
-open_cstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
- return create_conv(&cstostr_methods);
+ return create_conv(from_lcd, &cstombs_methods);
}
-static XlcConvMethodsRec strtowcs_methods = {
+static XlcConvMethodsRec cstowcs_methods = {
close_converter,
- strtowcs,
+ cstowcs,
NULL
-} ;
+};
static XlcConv
-open_strtowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
- return create_conv(&strtowcs_methods);
+ return create_conv(from_lcd, &cstowcs_methods);
}
XLCd
-_XlcDefaultLoader(name)
- char *name;
+_XlcDefaultLoader(
+ const char *name)
{
XLCd lcd;
- if (strcmp(name, "C"))
- return (XLCd) NULL;
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == NULL)
+ return lcd;
- lcd = _XlcCreateLC(name, _XlcPublicMethods);
+ if (XLC_PUBLIC(lcd, mb_cur_max) != 1){
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_strtowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_strtostr);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_strtostr);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_strtostr);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_strtostr);/* XXX */
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_mbstostr);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstostr);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstostr);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
_XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstostr);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtombs);
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_mbstowcs);
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtostr);
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstostr);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_strtowcs);
+ _XlcAddUtf8Converters(lcd);
return lcd;
}
diff --git a/modules/lc/gen/lcGenConv.c b/modules/lc/gen/lcGenConv.c
index 39405609..e8b1d16a 100644
--- a/modules/lc/gen/lcGenConv.c
+++ b/modules/lc/gen/lcGenConv.c
@@ -31,13 +31,28 @@
* Modifier: Masayoshi Shimamura FUJITSU LIMITED
*
*/
+/*
+ * 2000
+ * Modifier: Ivan Pascal The XFree86 Project
+ */
+/* $XFree86: xc/lib/X11/lcGenConv.c,v 3.27 2003/02/25 22:02:45 dawes Exp $ */
+/*
+ * A generic locale loader for all kinds of ISO-2022 based codesets.
+ * Supports: all locales.
+ * How: Provides generic converters for ISO-2022 based codesets. Extensible as
+ * far as ISO-2022 is extensible: codesets can be given by name in the
+ * stream. Overall distinction between GL (0x00..0x7f) and GR (0x80..0xff).
+ * In every chunk between escape sequences, the number of bytes per
+ * character (char_size) is constant.
+ * Platforms: all systems.
+ */
#include "Xlibint.h"
#include "XlcGeneric.h"
#include <stdio.h>
-#if !defined(X_NOT_STDC_ENV) && !defined(macII) && !defined(X_LOCALE)
+#if !defined(macII) && !defined(Lynx_22) && !defined(X_LOCALE)
#define STDCVT
#endif
@@ -46,9 +61,6 @@ typedef struct _CTDataRec {
char *encoding; /* Compound Text encoding */
} CTDataRec, *CTData;
-extern CTDataRec *default_ct_data_list();
-extern size_t default_ct_data_list_num();
-
static CTDataRec directionality_data[] =
{
{ "BEGIN_LEFT-TO-RIGHT_TEXT", "\2331]" },
@@ -58,9 +70,13 @@ static CTDataRec directionality_data[] =
typedef struct _StateRec {
XLCd lcd;
+ /* CT state */
XlcCharSet charset; /* charset of current state */
XlcCharSet GL_charset; /* charset of initial state in GL */
XlcCharSet GR_charset; /* charset of initial state in GR */
+ /* MB shift state */
+ CodeSet GL_codeset;
+ CodeSet GR_codeset;
} StateRec, *State;
#define GR 0x80 /* begins right-side (non-ascii) region */
@@ -69,26 +85,28 @@ typedef struct _StateRec {
#define CSI 0x9b
#define STX 0x02
-#define isleftside(c) (((c) & GR) ? 0 : 1)
-#define isrightside(c) (!isleftside(c))
-
+#define isrightside(c) ((c) & GR)
+#define isleftside(c) (!isrightside(c))
/* Forward declarations for local routines. */
-static int mbstocts();
-static int ctstombs();
-
+static int mbstocts (XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args);
+static int ctstombs (XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args);
+static int cstombs (XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args);
/* ------------------------------------------------------------------------- */
/* Misc */
/* ------------------------------------------------------------------------- */
static int
-compare(src, encoding, length)
- register char *src;
- register char *encoding;
- register int length;
+compare(
+ const char *src,
+ const char *encoding,
+ int length)
{
- char *start = src;
+ const char *start = src;
while (length-- > 0) {
if (*src++ != *encoding++)
@@ -101,9 +119,9 @@ compare(src, encoding, length)
}
static unsigned long
-conv_to_dest(conv, code)
- Conversion conv;
- unsigned long code;
+conv_to_dest(
+ Conversion conv,
+ unsigned long code)
{
int i;
int conv_num = conv->conv_num;
@@ -126,9 +144,9 @@ conv_to_dest(conv, code)
}
static unsigned long
-conv_to_source(conv, code)
- Conversion conv;
- unsigned long code;
+conv_to_source(
+ Conversion conv,
+ unsigned long code)
{
int i;
int conv_num;
@@ -145,17 +163,16 @@ conv_to_source(conv, code)
convlist = conv->convlist;
for (i = 0; i < conv_num; i++) {
- start_p = convlist[i].start + convlist[i].shift;
- start_m = convlist[i].start - convlist[i].shift;
- end_p = convlist[i].end + convlist[i].shift;
- end_m = convlist[i].end - convlist[i].shift;
-
switch (convlist[i].shift_direction) {
case '+':
+ start_p = convlist[i].start + convlist[i].shift;
+ end_p = convlist[i].end + convlist[i].shift;
if (start_p <= code && code <= end_p)
return(code - convlist[i].shift);
break;
case '-':
+ start_m = convlist[i].start - convlist[i].shift;
+ end_m = convlist[i].end - convlist[i].shift;
if (start_m <= code && code <= end_m)
return(code + convlist[i].shift);
break;
@@ -168,9 +185,9 @@ conv_to_source(conv, code)
}
static unsigned long
-mb_to_gi(mb, codeset)
- unsigned long mb;
- CodeSet codeset;
+mb_to_gi(
+ unsigned long mb,
+ CodeSet codeset)
{
int i;
unsigned long mb_tmp, mask = 0;
@@ -193,9 +210,9 @@ mb_to_gi(mb, codeset)
}
static unsigned long
-gi_to_mb(glyph_index, codeset)
- unsigned long glyph_index;
- CodeSet codeset;
+gi_to_mb(
+ unsigned long glyph_index,
+ CodeSet codeset)
{
int i;
unsigned long mask = 0;
@@ -213,19 +230,18 @@ gi_to_mb(glyph_index, codeset)
}
static Bool
-gi_to_wc(lcd, glyph_index, codeset, wc)
- XLCd lcd;
- unsigned long glyph_index;
- CodeSet codeset;
- wchar_t *wc;
+gi_to_wc(
+ XLCd lcd,
+ unsigned long glyph_index,
+ CodeSet codeset,
+ wchar_t *wc)
{
unsigned char mask = 0;
unsigned long wc_encoding = codeset->wc_encoding;
- int i, length = codeset->length;
+ int length = codeset->length;
unsigned long wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- for (i = wc_shift_bits; i > 0; i--)
- mask = (mask << 1) | 0x01;
+ mask = (1 << wc_shift_bits) - 1 ;
for (*wc = 0, length--; length >= 0; length--)
*wc = (*wc << wc_shift_bits) | ((glyph_index >> (length * 8 )) & mask);
@@ -236,11 +252,11 @@ gi_to_wc(lcd, glyph_index, codeset, wc)
}
static Bool
-wc_to_gi(lcd, wc, glyph_index, codeset)
- XLCd lcd;
- wchar_t wc;
- unsigned long *glyph_index;
- CodeSet *codeset;
+wc_to_gi(
+ XLCd lcd,
+ wchar_t wc,
+ unsigned long *glyph_index,
+ CodeSet *codeset)
{
int i;
unsigned char mask = 0;
@@ -260,8 +276,7 @@ wc_to_gi(lcd, wc, glyph_index, codeset)
if (*codeset == NULL)
return(False);
- for (i = wc_shift_bits; i > 0; i--)
- mask = (mask << 1) | 0x01;
+ mask = (1 << wc_shift_bits) - 1 ;
wc = wc & ~wc_encode_mask;
for (*glyph_index = 0, i = (*codeset)->length - 1; i >= 0; i--)
@@ -272,9 +287,40 @@ wc_to_gi(lcd, wc, glyph_index, codeset)
}
static CodeSet
-byteM_parse_codeset(lcd, inbufptr)
- XLCd lcd;
- XPointer inbufptr;
+mb_parse_codeset(
+ State state,
+ int num,
+ const char **inbufptr,
+ int *from_left)
+{
+ int len;
+ int from_len = (*from_left) + 1;
+ const char *src = (*inbufptr) - 1;
+ ParseInfo *mb_parse_list = XLC_GENERIC(state->lcd, mb_parse_list);
+ ParseInfo parse_info;
+ CodeSet codeset;
+
+ for (--num ; (parse_info = mb_parse_list[num]) != NULL; num++) {
+ len = compare(src, parse_info->encoding, from_len);
+ if (len > 0) {
+ codeset = parse_info->codeset;
+ if (parse_info->type == E_LSL)
+ state->GL_codeset = codeset;
+ else if (parse_info->type == E_LSR)
+ state->GR_codeset = codeset;
+ --len;
+ *inbufptr += len;
+ *from_left -= len;
+ return codeset;
+ }
+ }
+ return (CodeSet) NULL;
+}
+
+static CodeSet
+byteM_parse_codeset(
+ XLCd lcd,
+ const char *inbufptr)
{
unsigned char ch;
CodeSet codeset;
@@ -282,7 +328,7 @@ byteM_parse_codeset(lcd, inbufptr)
ByteInfoListRec byteM_rec;
ByteInfo byteinfo;
ByteInfoRec byteinfo_rec;
- Bool hit;
+ Bool hit = False;
int i, j, k;
int codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -299,7 +345,7 @@ byteM_parse_codeset(lcd, inbufptr)
byteM_rec = byteM[j];
byteinfo = byteM_rec.byteinfo;
- for (hit=False,k=0; k < byteM_rec.byteinfo_num; k++) {
+ for (hit = False, k = 0; k < byteM_rec.byteinfo_num; k++) {
byteinfo_rec = byteinfo[k];
if (byteinfo_rec.start <= ch && ch <= byteinfo_rec.end) {
hit = True;
@@ -318,51 +364,22 @@ byteM_parse_codeset(lcd, inbufptr)
return(NULL);
}
-static CodeSet
-GLGR_parse_codeset(lcd, ch)
- XLCd lcd;
- unsigned char ch;
-{
- int i;
- CodeSet initial_state_GL = XLC_GENERIC(lcd, initial_state_GL);
- CodeSet initial_state_GR = XLC_GENERIC(lcd, initial_state_GR);
- CodeSet *codeset_list = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- XlcSide side = XlcGL;
- CodeSet codeset = initial_state_GL;
-
- if (isrightside(ch)) {
- side = XlcGR;
- codeset = initial_state_GR;
- }
-
- if (codeset)
- return(codeset);
-
- for (i = 0; i < codeset_num; i++) {
- codeset = codeset_list[i];
- if (codeset->side == side)
- return(codeset);
- }
-
- return(NULL);
-}
+#define GLGR_parse_codeset(ch) \
+ (isrightside(ch) ? (state->GR_codeset) : \
+ (state->GL_codeset) )
static XlcCharSet
-gi_parse_charset(glyph_index, codeset)
- unsigned long glyph_index;
- CodeSet codeset;
+gi_parse_charset(
+ unsigned long glyph_index,
+ CodeSet codeset)
{
int i;
XlcCharSet *charset_list = codeset->charset_list;
int num_charsets = codeset->num_charsets;
ExtdSegment ctextseg = codeset->ctextseg;
- XlcCharSet charset;
+ XlcCharSet charset = NULL;
int area_num;
FontScope area;
- CTDataRec *default_ct_data = default_ct_data_list();
- size_t table_size = default_ct_data_list_num();
/* lockup ct sequence */
for (i = 0; i < num_charsets; i++) {
@@ -373,15 +390,9 @@ gi_parse_charset(glyph_index, codeset)
if (i >= num_charsets)
return(NULL);
- /* Standard Character Set Encoding ? */
- for (i = 0; i < table_size; i++)
- if (compare(charset->ct_sequence,
- default_ct_data[i].encoding, strlen(charset->ct_sequence)))
- goto check_extended_seg;
-
- return(charset);
+ if (charset->source != CSsrcStd)
+ return (charset);
-check_extended_seg:
if (!ctextseg)
return(charset);
@@ -405,9 +416,9 @@ check_extended_seg:
}
static Bool
-ct_parse_csi(inbufptr, ctr_seq_len)
- XPointer inbufptr;
- int *ctr_seq_len;
+ct_parse_csi(
+ const char *inbufptr,
+ int *ctr_seq_len)
{
int i;
int num = sizeof(directionality_data) / sizeof(directionality_data[0]);
@@ -425,15 +436,14 @@ ct_parse_csi(inbufptr, ctr_seq_len)
}
static int
-cmp_esc_sequence(inbufptr, ct_sequence, encoding_name)
- XPointer inbufptr;
- char *ct_sequence;
- char *encoding_name;
+cmp_esc_sequence(
+ const char *inbufptr,
+ XlcCharSet charset)
{
- int i, seq_len, name_len, total_len;
+ int seq_len, name_len, total_len;
unsigned char byte_m, byte_l;
- CTDataRec *default_ct_data = default_ct_data_list();
- size_t table_size = default_ct_data_list_num();
+ const char *ct_sequence = charset->ct_sequence;
+ const char *encoding_name = charset->encoding_name;
/* check esc sequence */
if ( !(seq_len = strlen(ct_sequence) ) )
@@ -442,49 +452,48 @@ cmp_esc_sequence(inbufptr, ct_sequence, encoding_name)
return(0);
/* Standard Character Set Encoding ? */
- for (i = 0; i < table_size; i++) {
- if (compare(ct_sequence,
- default_ct_data[i].encoding, strlen(ct_sequence)))
- return(seq_len);
- }
+ if (charset->source == CSsrcStd)
+ return(seq_len);
/*
* Non-Standard Character Set Encoding
*
- * +-----+-----+-----+-----+-----+-----+-----+---- ----+-----+-----+
- * | esc sequence | M | L | encoding name | STX |
- * +-----+-----+-----+-----+-----+-----+-----+---- ----+-----+-----+
- * 4bytes 1byte 1byte variable length 1byte
- * | |
- * +-----------------------------------------+
- * name length = ((M - 128) * 128) + (L - 128)
+ * +--- ---+-----+-----+-----+---- ----+-----+-----+------- ------+
+ * | ctseq | M | L | encoding name | STX | contents |
+ * +--- ---+-----+-----+-----+---- ----+-----+-----+------- ------+
+ * 4bytes 1byte 1byte variable length 1byte variable length
+ * | |
+ * +----------------------------------------------+
+ * rest length = ((M - 128) * 128) + (L - 128)
*/
/* get length of encoding name */
inbufptr += seq_len;
byte_m = *inbufptr++;
byte_l = *inbufptr++;
- name_len = ((byte_m - 128) * 128) + (byte_l - 128);
- total_len = seq_len + name_len;
+ name_len = strlen(encoding_name);
- /* compare encoding names */
- if ( strncmp(inbufptr, encoding_name, name_len - 3) != 0 )
+ if (((byte_m - 128) * 128 + (byte_l - 128) - 1) < name_len)
+ return(0);
+
+ if ( _XlcNCompareISOLatin1(inbufptr, encoding_name, name_len) != 0 )
return(0);
/* check STX (Start of Text) */
- inbufptr = inbufptr + name_len - 3;
+ inbufptr = inbufptr + name_len;
if ( *inbufptr != STX )
return(0);
+ total_len = seq_len + name_len + 3;
return(total_len);
}
static Bool
-ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
- XLCd lcd;
- XPointer inbufptr;
- XlcCharSet *charset;
- int *ctr_seq_len;
+ct_parse_charset(
+ XLCd lcd,
+ const char *inbufptr,
+ XlcCharSet *charset,
+ int *ctr_seq_len)
{
int i, j;
ExtdSegment ctextseg;
@@ -496,7 +505,6 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
int segment_conv_num = XLC_GENERIC(lcd, segment_conv_num);
SegConv segment_conv = XLC_GENERIC(lcd, segment_conv);
-
/* get charset from XLC_XLOCALE by escape sequence */
for (i = 0; i < codeset_num; i++) {
@@ -508,15 +516,13 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
for (j = 0; j < num_charsets; j++) {
*charset = charset_list[j];
- if (( *ctr_seq_len = cmp_esc_sequence(inbufptr,
- (*charset)->ct_sequence, (*charset)->encoding_name) ))
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
}
if (ctextseg) {
*charset = ctextseg->charset;
- if (( *ctr_seq_len = cmp_esc_sequence(inbufptr,
- (*charset)->ct_sequence, (*charset)->encoding_name) ))
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
}
}
@@ -528,23 +534,21 @@ ct_parse_charset(lcd, inbufptr, charset, ctr_seq_len)
for (i = 0; i < segment_conv_num; i++) {
*charset = segment_conv[i].source;
- if (( *ctr_seq_len = cmp_esc_sequence(inbufptr,
- (*charset)->ct_sequence, (*charset)->encoding_name) ))
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
*charset = segment_conv[i].dest;
- if (( *ctr_seq_len = cmp_esc_sequence(inbufptr,
- (*charset)->ct_sequence, (*charset)->encoding_name) ))
+ if ((*ctr_seq_len = cmp_esc_sequence(inbufptr, *charset)))
return(True);
}
-
+
return(False);
}
static Bool
-segment_conversion(lcd, charset, glyph_index)
- XLCd lcd;
- XlcCharSet *charset;
- unsigned long *glyph_index;
+segment_conversion(
+ XLCd lcd,
+ XlcCharSet *charset,
+ unsigned long *glyph_index)
{
int i;
int segment_conv_num = XLC_GENERIC(lcd, segment_conv_num);
@@ -575,10 +579,10 @@ segment_conversion(lcd, charset, glyph_index)
return(True);
}
-CodeSet
-_XlcGetCodeSetFromName(lcd, name)
- XLCd lcd;
- char *name;
+static CodeSet
+_XlcGetCodeSetFromName(
+ XLCd lcd,
+ const char *name)
{
int i, j;
XlcCharSet charset;
@@ -609,21 +613,19 @@ _XlcGetCodeSetFromName(lcd, name)
}
static Bool
-_XlcGetCodeSetFromCharSet(lcd, charset, codeset, glyph_index)
- XLCd lcd;
- XlcCharSet charset;
- CodeSet *codeset;
- unsigned long *glyph_index;
+_XlcGetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset,
+ CodeSet *codeset,
+ unsigned long *glyph_index)
{
- int i, j, num;
+ int j, num;
CodeSet *codeset_list = XLC_GENERIC(lcd, codeset_list);
XlcCharSet *charset_list;
int codeset_num, num_charsets;
Conversion ctconv;
- unsigned long glyph_index_tmp;
+ unsigned long glyph_index_tmp = 0;
ExtdSegment ctextseg;
- CTDataRec *default_ct_data = default_ct_data_list();
- size_t table_size = default_ct_data_list_num();
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -637,14 +639,7 @@ _XlcGetCodeSetFromCharSet(lcd, charset, codeset, glyph_index)
glyph_index_tmp = conv_to_source(ctconv, *glyph_index);
- /* Standard Character Set Encoding ? */
- for (i = 0; i < table_size; i++) {
- if (compare(charset->ct_sequence,
- default_ct_data[i].encoding, strlen(charset->ct_sequence)))
- break;
- }
-
- if (i < table_size) {
+ if (charset->source == CSsrcStd) {
/* Standard Character Set Encoding */
if (glyph_index_tmp == *glyph_index) {
@@ -665,7 +660,7 @@ _XlcGetCodeSetFromCharSet(lcd, charset, codeset, glyph_index)
}
if (glyph_index_tmp != *glyph_index) {
- if (ctextseg->charset == charset) {
+ if (ctextseg && ctextseg->charset == charset) {
goto end_loop;
}
}
@@ -683,37 +678,19 @@ end_loop:
return(False);
}
-static Bool
-check_string_encoding(codeset)
- CodeSet codeset;
-{
- int i;
- XlcCharSet charset;
- XlcCharSet *charset_list = codeset->charset_list;
- int num_charsets = codeset->num_charsets;
-
- for (i = 0; i < num_charsets; i++) {
- charset = charset_list[i];
- if ( strcmp(charset->encoding_name, "ISO8859-1") == 0 ||
- charset->string_encoding)
- return(True);
- }
-
- return(False);
-}
+#define check_string_encoding(codeset) (codeset->string_encoding)
static void
-output_ulong_value(outbufptr, code, length, side)
- XPointer outbufptr;
- unsigned long code;
- int length;
- XlcSide side;
+output_ulong_value(
+ char *outbufptr,
+ unsigned long code,
+ int length,
+ XlcSide side)
{
int i;
- unsigned long mask = 0xff;
- for (i = 0; i < length; i++) {
- *outbufptr = ( code >> (8 * (length - i - 1)) ) & mask;
+ for (i = (length - 1) * 8; i >= 0; i -= 8) {
+ *outbufptr = ( code >> i) & 0xff;
if (side == XlcC0 || side == XlcGL) {
*outbufptr = *outbufptr & GL;
@@ -729,16 +706,23 @@ output_ulong_value(outbufptr, code, length, side)
/* Init */
/* -------------------------------------------------------------------------- */
+static XlcCharSet default_GL_charset = 0;
+static XlcCharSet default_GR_charset = 0;
+
static void
-init_state(conv)
- XlcConv conv;
+init_state(
+ XlcConv conv)
{
- register State state = (State) conv->state;
+ State state = (State) conv->state;
/* for CT */
state->charset = NULL;
- state->GL_charset = _XlcGetCharSet("ISO8859-1:GL");
- state->GR_charset = _XlcGetCharSet("ISO8859-1:GR");
+ state->GL_charset = default_GL_charset;
+ state->GR_charset = default_GR_charset;
+
+ /* for MB shift state */
+ state->GL_codeset = XLC_GENERIC(state->lcd, initial_state_GL);
+ state->GR_codeset = XLC_GENERIC(state->lcd, initial_state_GR);
}
/* -------------------------------------------------------------------------- */
@@ -746,14 +730,14 @@ init_state(conv)
/* -------------------------------------------------------------------------- */
static int
-mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstowcs_org(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -765,18 +749,19 @@ mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
int length = 0, len_left = 0;
int unconv_num = 0;
int num;
- Bool ss_flag = 0;
CodeSet codeset = NULL;
- ParseInfo parse_info;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
int from_size = *from_left;
unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
- ParseInfo *mb_parse_list = XLC_GENERIC(lcd, mb_parse_list);
+ if (from == NULL || *from == NULL) {
+ _XlcResetConverter(conv);
+ return( 0 );
+ }
if (*from_left > *to_left)
*from_left = *to_left;
@@ -805,25 +790,21 @@ mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
goto output_one_wc;
/* next mb char data for single shift ? */
- if (mb_parse_table) {
- if ((num = mb_parse_table[ch]) > 0) {
- parse_info = mb_parse_list[num - 1];
-
- codeset = parse_info->codeset;
+ if (mb_parse_table && (num = mb_parse_table[ch]) ) {
+ codeset = mb_parse_codeset(state, num, &inbufptr, from_left);
+ if (codeset != NULL) {
length = len_left = codeset->length;
mb = 0;
- ss_flag = 1;
-
continue;
}
- }
+ }
/* next mb char data for byteM ? */
if ((codeset = byteM_parse_codeset(lcd, (inbufptr - 1))))
goto next_mb_char;
/* next mb char data for GL or GR side ? */
- if ((codeset = GLGR_parse_codeset(lcd, ch)))
+ if ((codeset = GLGR_parse_codeset(ch)))
goto next_mb_char;
/* can't find codeset for the ch */
@@ -833,7 +814,6 @@ mbstowcs_org(conv, from, from_left, to, to_left, args, num_args)
next_mb_char:
length = len_left = codeset->length;
mb = 0;
- ss_flag = 0;
output_one_wc:
mb = (mb << 8) | ch; /* 1 byte left shift */
@@ -850,29 +830,29 @@ output_one_wc:
/* error check on last char */
if (len_left) {
- inbufptr -= (length - len_left + ss_flag);
- (*from_left) += (length - len_left + ss_flag);
- unconv_num += (length - len_left + ss_flag);
+ inbufptr -= (length - len_left);
+ (*from_left) += (length - len_left);
+ unconv_num += (length - len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
-{
- char *src = *((char **) from);
+stdc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *src = *((const char **) from);
wchar_t *dst = *((wchar_t **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -911,14 +891,14 @@ stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstombs_org(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -932,11 +912,11 @@ wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
- char *default_string = XLC_PUBLIC(lcd, default_string);
+ const char *default_string = XLC_PUBLIC(lcd, default_string);
int defstr_len = strlen(default_string);
@@ -962,9 +942,10 @@ wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
/* output default_string of XDefaultString() */
if (*to_left < defstr_len)
break;
- if (outbufptr) {strncpy((char *)outbufptr, default_string, defstr_len);}
-
- if (outbufptr) {outbufptr += defstr_len;}
+ if (outbufptr) {
+ strncpy((char *)outbufptr, default_string, defstr_len);
+ outbufptr += defstr_len;
+ }
(*to_left) -= defstr_len;
unconv_num++;
@@ -972,16 +953,37 @@ wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
} else {
mb = gi_to_mb(glyph_index, codeset);
if (codeset->parse_info) {
+ Bool need_shift = False;
+ switch (codeset->parse_info->type) {
+ case E_LSL :
+ if (codeset != state->GL_codeset) {
+ need_shift = True;
+ state->GL_codeset = codeset;
+ }
+ break;
+ case E_LSR :
+ if (codeset != state->GR_codeset) {
+ need_shift = True;
+ state->GR_codeset = codeset;
+ }
+ break;
+ /* case E_SS */
+ default:
+ need_shift = True;
+ }
/* output shift sequence */
- encoding = codeset->parse_info->encoding;
- length = strlen(encoding);
- if (*to_left < length)
- break;
- if (outbufptr) {strncpy((char *)outbufptr, encoding, length);}
-
- if (outbufptr) {outbufptr += length;}
- (*to_left) -= length;
+ if (need_shift) {
+ encoding = codeset->parse_info->encoding;
+ length = strlen(encoding);
+ if (*to_left < length)
+ break;
+ if (outbufptr) {
+ strncpy((char *)outbufptr, encoding, length);
+ outbufptr += length;
+ }
+ (*to_left) -= length;
+ }
}
/* output characters */
@@ -999,24 +1001,24 @@ wcstombs_org(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const wchar_t *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
-{
- wchar_t *src = *((wchar_t **) from);
+stdc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *src = *((const wchar_t **) from);
char *dst = *((char **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -1048,36 +1050,34 @@ stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- CTDataRec *default_ct_data = default_ct_data_list();
- size_t table_size = default_ct_data_list_num();
unsigned long glyph_index;
wchar_t wc;
- int i, total_len, seq_len, name_len;
+ int total_len, seq_len, name_len;
int unconv_num = 0;
Bool first_flag = True, standard_flag;
XlcSide side;
CodeSet codeset;
XlcCharSet charset, old_charset = NULL;
- char *ct_sequence;
+ const char *ct_sequence;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
-
+ char *ext_seg_len = NULL;
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1108,11 +1108,7 @@ wcstocts(conv, from, from_left, to, to_left, args, num_args)
}
/* Standard Character Set Encoding ? */
- standard_flag = False;
- for (i = 0; i < table_size; i++)
- if (compare(charset->ct_sequence,
- default_ct_data[i].encoding, strlen(charset->ct_sequence)))
- standard_flag = True;
+ standard_flag = charset->source == CSsrcStd ? True : False;
/*
* Non-Standard Character Set Encoding
@@ -1134,14 +1130,21 @@ wcstocts(conv, from, from_left, to, to_left, args, num_args)
name_len = 0;
total_len = seq_len;
} else {
- name_len = 2 + strlen(charset->encoding_name) + 1;
- total_len = seq_len + name_len;
+ name_len = strlen(charset->encoding_name) + 1;
+ total_len = seq_len + name_len + 2;
}
/* output escape sequence of CT */
if ( (charset != old_charset) &&
- !(first_flag && (strcmp(charset->encoding_name,"ISO8859-1")==0))) {
+ !(first_flag && charset->string_encoding) ){
+ if ( (ext_seg_len != NULL) && outbufptr) {
+ int i = (outbufptr - ext_seg_len) - 2;
+ *ext_seg_len++ = i / 128 + 128;
+ *ext_seg_len = i % 128 + 128;
+ ext_seg_len = NULL;
+ }
+
if (*to_left < total_len + 1) {
unconv_num++;
break;
@@ -1152,10 +1155,12 @@ wcstocts(conv, from, from_left, to, to_left, args, num_args)
outbufptr += seq_len;
if (!standard_flag) {
- *outbufptr++ = name_len / 128 + 128;
- *outbufptr++ = name_len % 128 + 128;
- strcpy((char *)outbufptr, charset->encoding_name);
- outbufptr = outbufptr + name_len - 2 - 1;
+ const char *i = charset->encoding_name;
+ ext_seg_len = outbufptr;
+ outbufptr += 2;
+ for (; *i ; i++)
+ *outbufptr++ = ((*i >= 'A') && (*i <= 'Z')) ?
+ *i - 'A' + 'a' : *i;
*outbufptr++ = STX;
}
}
@@ -1183,27 +1188,33 @@ wcstocts(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ if ( (ext_seg_len != NULL) && outbufptr) {
+ int i = (outbufptr - ext_seg_len) - 2;
+ *ext_seg_len++ = i / 128 + 128;
+ *ext_seg_len = i % 128 + 128;
+ }
+
+ *from = (XPointer) ((const wchar_t *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1227,14 +1238,14 @@ ret:
}
static int
-ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1249,15 +1260,14 @@ ctstowcs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset = NULL;
XlcCharSet charset_tmp;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
int from_size = *from_left;
-
- init_state(conv);
+ _XlcResetConverter(conv); /* ??? */
if (from == NULL || *from == NULL) {
- init_state(conv);
+ _XlcResetConverter(conv);
return( 0 );
}
@@ -1292,7 +1302,7 @@ ctstowcs(conv, from, from_left, to, to_left, args, num_args)
if ( !ct_parse_csi(inbufptr - 1, &ctr_seq_len) )
goto skip_the_seg;
- if (*from_left < ctr_seq_len) {
+ if (*from_left + 1 < ctr_seq_len) {
inbufptr--;
(*from_left)++;
unconv_num += *from_left;
@@ -1328,7 +1338,7 @@ ctstowcs(conv, from, from_left, to, to_left, args, num_args)
state->GR_charset = state->charset;
}
- if (*from_left < ctr_seq_len) {
+ if (*from_left + 1 < ctr_seq_len) {
inbufptr--;
(*from_left)++;
unconv_num += *from_left;
@@ -1364,10 +1374,7 @@ output_one_wc:
/* segment conversion */
charset_tmp = state->charset;
- if ( !segment_conversion(lcd, &charset_tmp, &glyph_index) ) {
- unconv_num += gi_len;
- continue;
- }
+ segment_conversion(lcd, &charset_tmp, &glyph_index);
/* get codeset */
if ( !_XlcGetCodeSetFromCharSet(lcd, charset_tmp,
@@ -1411,27 +1418,126 @@ skip_the_seg:
unconv_num += (gi_len - gi_len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ XLCd lcd = state->lcd;
+
+ unsigned char ch;
+ unsigned long glyph_index = 0;
+ wchar_t wc;
+ int gi_len_left = 0, gi_len = 0;
+
+ int unconv_num = 0;
+
+ CodeSet codeset = NULL;
+ XlcCharSet charset, charset_tmp;
+
+ const char *inbufptr = *from;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ int from_size = *from_left;
+
+ if (from == NULL || *from == NULL) {
+ return( 0 );
+ }
+
+ charset = (XlcCharSet) args[0];
+
+ while (*from_left && *to_left) {
+
+ if (!gi_len_left) {
+ gi_len_left = gi_len = charset->char_size;
+ glyph_index = 0;
+ }
+
+ ch = *inbufptr++;
+ (*from_left)--;
+
+ /* null ? */
+ if (!ch) {
+ if (outbufptr) {*outbufptr++ = L'\0';}
+ (*to_left)--;
+
+ /* error check */
+ if (gi_len_left) {
+ unconv_num += (gi_len - gi_len_left);
+ gi_len_left = 0;
+ }
+ continue;
+ }
+
+ if (charset->side == XlcC1 || charset->side == XlcGR)
+ glyph_index = (glyph_index << 8) | (ch & GL);
+ else
+ glyph_index = (glyph_index << 8) | ch;
+
+ gi_len_left--;
+
+ /* last of one glyph_index data */
+ if (!gi_len_left) {
+
+ /* segment conversion */
+ charset_tmp = charset;
+ segment_conversion(lcd, &charset_tmp, &glyph_index);
+
+ /* get codeset */
+ if ( !_XlcGetCodeSetFromCharSet(lcd, charset_tmp,
+ &codeset, &glyph_index) ) {
+ unconv_num += gi_len;
+ continue;
+ }
+
+ /* convert glyph index to wicd char */
+ gi_to_wc(lcd, glyph_index, codeset, &wc);
+ if (outbufptr) {*outbufptr++ = wc;}
+ (*to_left)--;
+ }
+
+ } /* end of while */
+
+ /* error check on last char */
+ if (gi_len_left) {
+ inbufptr -= (gi_len - gi_len_left);
+ (*from_left) += (gi_len - gi_len_left);
+ unconv_num += (gi_len - gi_len_left);
+ }
+
+ *from = (XPointer) ((const char *) *from + from_size);
+ *from_left = 0;
+ *to = (XPointer) outbufptr;
+
+ return unconv_num;
+}
+
+static int
+stdc_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1455,19 +1561,55 @@ ret:
}
static int
-mbstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
+ char *buf_ptr1 = buf;
+ int buf_left1 = (*from_left) * MB_CUR_MAX;
+ char *buf_ptr2 = buf_ptr1;
+ int buf_left2;
+ int unconv_num1 = 0, unconv_num2 = 0;
+
+ unconv_num1 = cstombs(conv,
+ from, from_left, &buf_ptr1, &buf_left1, args, num_args);
+ if (unconv_num1 < 0)
+ goto ret;
+
+ buf_left2 = buf_ptr1 - buf_ptr2;
+
+ unconv_num2 = stdc_mbstowcs(conv,
+ &buf_ptr2, &buf_left2, to, to_left, args, num_args);
+ if (unconv_num2 < 0)
+ goto ret;
+
+ret:
+ if (buf)
+ Xfree((char *)buf);
+
+ return (unconv_num1 + unconv_num2);
+}
+
+static int
+mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t));
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left);
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1491,14 +1633,14 @@ ret:
}
static int
-mbstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1506,22 +1648,22 @@ mbstostr(conv, from, from_left, to, to_left, args, num_args)
unsigned char ch;
unsigned long mb = 0;
-
int length = 0, len_left = 0;
int unconv_num = 0;
int num;
- Bool ss_flag = 0;
CodeSet codeset = NULL;
- ParseInfo parse_info;
- XPointer inbufptr = *from;
- XPointer outbufptr = *to;
+ const char *inbufptr = *from;
+ char *outbufptr = *to;
int from_size = *from_left;
unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
- ParseInfo *mb_parse_list = XLC_GENERIC(lcd, mb_parse_list);
+ if (from == NULL || *from == NULL) {
+ _XlcResetConverter(conv);
+ return( 0 );
+ }
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1550,25 +1692,21 @@ mbstostr(conv, from, from_left, to, to_left, args, num_args)
goto output_one_mb;
/* next mb char data for single shift ? */
- if (mb_parse_table) {
- if ((num = mb_parse_table[ch]) > 0) {
- parse_info = mb_parse_list[num - 1];
-
- codeset = parse_info->codeset;
- length = len_left = codeset->length;
- mb = 0;
- ss_flag = 1;
-
- continue;
+ if (mb_parse_table && (num = mb_parse_table[ch]) ) {
+ codeset = mb_parse_codeset(state, num, &inbufptr, from_left);
+ if (codeset != NULL) {
+ length = len_left = codeset->length;
+ mb = 0;
+ continue;
}
- }
-
+ }
+
/* next char data : byteM ? */
if ((codeset = byteM_parse_codeset(lcd, (inbufptr - 1))))
goto next_mb_char;
/* next char data : GL or GR side ? */
- if ((codeset = GLGR_parse_codeset(lcd, ch)))
+ if ((codeset = GLGR_parse_codeset(ch)))
goto next_mb_char;
/* can't find codeset for the ch */
@@ -1578,7 +1716,6 @@ mbstostr(conv, from, from_left, to, to_left, args, num_args)
next_mb_char:
length = len_left = codeset->length;
mb = 0;
- ss_flag = 0;
output_one_mb:
mb = (mb << 8) | ch; /* 1 byte left shift */
@@ -1598,27 +1735,27 @@ output_one_mb:
/* error check on last char */
if (len_left) {
- inbufptr -= (length - len_left + ss_flag);
- (*from_left) += (length - len_left + ss_flag);
- unconv_num += (length - len_left + ss_flag);
+ inbufptr -= (length - len_left);
+ (*from_left) += (length - len_left);
+ unconv_num += (length - len_left);
}
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1633,17 +1770,18 @@ mbtocs(conv, from, from_left, to, to_left, args, num_args)
XlcSide side;
CodeSet codeset = NULL;
- XlcCharSet charset;
- ParseInfo parse_info;
+ XlcCharSet charset = NULL;
- XPointer inbufptr = *from;
- XPointer outbufptr = *to;
+ const char *inbufptr = *from;
+ char *outbufptr = *to;
int from_size = *from_left;
-
unsigned char *mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
- ParseInfo *mb_parse_list = XLC_GENERIC(lcd, mb_parse_list);
+ if (from == NULL || *from == NULL) {
+ _XlcResetConverter(conv);
+ return( 0 );
+ }
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1666,24 +1804,21 @@ mbtocs(conv, from, from_left, to, to_left, args, num_args)
goto output;
/* next mb char data for single shift ? */
- if (mb_parse_table) {
- if ((num = mb_parse_table[ch]) > 0) {
- parse_info = mb_parse_list[num - 1];
-
- codeset = parse_info->codeset;
+ if (mb_parse_table && (num = mb_parse_table[ch]) ) {
+ codeset = mb_parse_codeset(state, num, &inbufptr, from_left);
+ if (codeset != NULL) {
length = len_left = codeset->length;
mb = 0;
-
continue;
}
- }
-
+ }
+
/* next mb char data for byteM ? */
if ((codeset = byteM_parse_codeset(lcd, (inbufptr - 1))))
goto next_mb_char;
/* next mb char data for GL or GR side ? */
- if ((codeset = GLGR_parse_codeset(lcd, ch)))
+ if ((codeset = GLGR_parse_codeset(ch)))
goto next_mb_char;
/* can't find codeset for the ch */
@@ -1730,15 +1865,15 @@ output:
/* error end */
if (unconv_num) {
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return -1;
}
/* nomal end */
- *from = inbufptr;
- *to = outbufptr;
+ *from = (XPointer) inbufptr;
+ *to = (XPointer) outbufptr;
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset;
@@ -1747,46 +1882,43 @@ output:
}
static int
-mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
int ret;
XlcCharSet charset_old, charset = NULL;
XPointer tmp_args[1];
- XPointer inbufptr;
+ const char *inbufptr;
int in_left;
- XPointer outbufptr;
+ char *outbufptr;
int out_left;
tmp_args[0] = (XPointer) &charset;
ret = mbtocs(conv, from, from_left, to, to_left, tmp_args, 1);
charset_old = charset;
- inbufptr = *from;
- in_left = *from_left;
- outbufptr = *to;
- out_left = *to_left;
-
- while ( ret == 0 && *from_left && *to_left && charset_old == charset ) {
- charset_old = charset;
+
+ while ( ret == 0 && *from_left && *to_left) {
inbufptr = *from;
in_left = *from_left;
outbufptr = *to;
out_left = *to_left;
ret = mbtocs(conv, from, from_left, to, to_left, tmp_args, 1);
+ if (charset_old != charset) {
+ *from = (XPointer) inbufptr;
+ *from_left = in_left;
+ *to = (XPointer) outbufptr;
+ *to_left = out_left;
+ break;
+ }
}
- *from = inbufptr;
- *from_left = in_left;
- *to = outbufptr;
- *to_left = out_left;
-
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset_old;
@@ -1798,14 +1930,14 @@ mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1819,11 +1951,11 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
- char *default_string = XLC_PUBLIC(lcd, default_string);
+ const char *default_string = XLC_PUBLIC(lcd, default_string);
int defstr_len = strlen(default_string);
@@ -1849,34 +1981,57 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
/* output default_string of XDefaultString() */
if (*to_left < defstr_len)
break;
- if (outbufptr) {strncpy((char *)outbufptr, default_string, defstr_len);}
-
- if (outbufptr) {outbufptr += defstr_len;}
+ if (outbufptr) {
+ strncpy((char *)outbufptr, default_string, defstr_len);
+ outbufptr += defstr_len;
+ }
(*to_left) -= defstr_len;
unconv_num++;
} else {
mb = gi_to_mb(glyph_index, codeset);
- if (codeset->parse_info) {
- /* output shift sequence */
- encoding = codeset->parse_info->encoding;
- length = strlen(encoding);
- if (*to_left < length)
- break;
- if (check_string_encoding(codeset)) {
- if (outbufptr) {strncpy((char *)outbufptr, encoding, length);}
- if (outbufptr) {outbufptr += length;}
- (*to_left) -= length;
+ if (check_string_encoding(codeset)) {
+ if (codeset->parse_info) {
+ Bool need_shift = False;
+ switch (codeset->parse_info->type) {
+ case E_LSL :
+ if (codeset != state->GL_codeset) {
+ need_shift = True;
+ state->GL_codeset = codeset;
+ }
+ break;
+ case E_LSR :
+ if (codeset != state->GR_codeset) {
+ need_shift = True;
+ state->GR_codeset = codeset;
+ }
+ break;
+ /* case E_SS */
+ default:
+ need_shift = True;
+ }
+
+ /* output shift sequence */
+ if (need_shift) {
+ encoding = codeset->parse_info->encoding;
+ length = strlen(encoding);
+ if (*to_left < length)
+ break;
+
+ if (outbufptr) {
+ strncpy((char *)outbufptr, encoding, length);
+ outbufptr += length;
+ }
+ (*to_left) -= length;
+ }
}
- }
- /* output characters */
- length = codeset->length;
- if (*to_left < length)
- break;
- if (check_string_encoding(codeset)) {
+ /* output characters */
+ length = codeset->length;
+ if (*to_left < length)
+ break;
if (outbufptr) {
output_ulong_value(outbufptr, mb, length, XlcNONE);
@@ -1891,27 +2046,27 @@ wcstostr(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const wchar_t *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_wcstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -1935,14 +2090,14 @@ ret:
}
static int
-wctocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wctocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -1955,14 +2110,12 @@ wctocs(conv, from, from_left, to, to_left, args, num_args)
XlcSide side;
CodeSet codeset;
- XlcCharSet charset;
+ XlcCharSet charset = NULL;
- wchar_t *inbufptr = (wchar_t *) *from;
- XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *outbufptr = *to;
int from_size = *from_left;
-
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -2011,15 +2164,15 @@ end:
/* error end */
if (unconv_num) {
- *from = *from + from_size;
+ *from = (XPointer) ((const wchar_t *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return -1;
}
/* nomal end */
- *from = (XPointer)inbufptr;
- *to = outbufptr;
+ *from = (XPointer) inbufptr;
+ *to = (XPointer) outbufptr;
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset;
@@ -2028,16 +2181,17 @@ end:
}
static int
-stdc_wctocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
-{
- wchar_t wch, *src = *((wchar_t **) from);
+stdc_wctocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *src = *((const wchar_t **) from);
+ wchar_t wch;
XPointer tmp_from, save_from = *from;
char tmp[32];
int length, ret, src_left = *from_left;
@@ -2065,7 +2219,7 @@ stdc_wctocs(conv, from, from_left, to, to_left, args, num_args)
end:
/* error end */
if (save_from == (XPointer) src) {
- *from = *from + from_size;
+ *from = (XPointer) ((const wchar_t *) *from + from_size);
*from_left = 0;
return -1;
}
@@ -2078,20 +2232,20 @@ end:
}
static int
-wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
int ret;
XlcCharSet charset_old, charset = NULL;
XPointer tmp_args[1];
- wchar_t *inbufptr;
+ const wchar_t *inbufptr;
int in_left;
XPointer outbufptr;
int out_left;
@@ -2099,25 +2253,22 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
ret = wctocs(conv, from, from_left, to, to_left, tmp_args, 1);
charset_old = charset;
- inbufptr = (wchar_t *)(*from);
- in_left = *from_left;
- outbufptr = *to;
- out_left = *to_left;
-
- while ( ret == 0 && *from_left && *to_left && charset_old == charset ) {
- charset_old = charset;
- inbufptr = (wchar_t *)(*from);
+
+ while ( ret == 0 && *from_left && *to_left) {
+ inbufptr = (const wchar_t *) *from;
in_left = *from_left;
outbufptr = *to;
out_left = *to_left;
ret = wctocs(conv, from, from_left, to, to_left, tmp_args, 1);
+ if (charset_old != charset) {
+ *from = (XPointer) inbufptr;
+ *from_left = in_left;
+ *to = (XPointer) outbufptr;
+ *to_left = out_left;
+ break;
+ }
}
- *from = (XPointer)inbufptr;
- *from_left = in_left;
- *to = outbufptr;
- *to_left = out_left;
-
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset_old;
@@ -2128,21 +2279,23 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
return(0);
}
+#ifdef STDCVT
+
static int
-stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
int ret;
XlcCharSet charset_old, charset = NULL;
XPointer tmp_args[1];
- wchar_t *inbufptr;
+ const wchar_t *inbufptr;
int in_left;
XPointer outbufptr;
int out_left;
@@ -2150,25 +2303,22 @@ stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
ret = stdc_wctocs(conv, from, from_left, to, to_left, tmp_args, 1);
charset_old = charset;
- inbufptr = (wchar_t *)(*from);
- in_left = *from_left;
- outbufptr = *to;
- out_left = *to_left;
-
- while ( ret == 0 && *from_left && *to_left && charset_old == charset ) {
- charset_old = charset;
- inbufptr = (wchar_t *)(*from);
+
+ while ( ret == 0 && *from_left && *to_left ) {
+ inbufptr = (const wchar_t *) *from;
in_left = *from_left;
outbufptr = *to;
out_left = *to_left;
ret = stdc_wctocs(conv, from, from_left, to, to_left, tmp_args, 1);
+ if (charset_old != charset) {
+ *from = (XPointer) inbufptr;
+ *from_left = in_left;
+ *to = (XPointer) outbufptr;
+ *to_left = out_left;
+ break;
+ }
}
- *from = (XPointer)inbufptr;
- *from_left = in_left;
- *to = outbufptr;
- *to_left = out_left;
-
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset_old;
@@ -2179,20 +2329,22 @@ stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
return(0);
}
+#endif
+
static int
-ctstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t));
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left);
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -2216,14 +2368,50 @@ ret:
}
static int
-strtombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XPointer buf = Xmalloc((*from_left) * sizeof(wchar_t));
+ char *buf_ptr1 = buf;
+ int buf_left1 = (*from_left);
+ char *buf_ptr2 = buf_ptr1;
+ int buf_left2;
+ int unconv_num1 = 0, unconv_num2 = 0;
+
+ unconv_num1 = cstowcs(conv,
+ from, from_left, &buf_ptr1, &buf_left1, args, num_args);
+ if (unconv_num1 < 0)
+ goto ret;
+
+ buf_left2 = (buf_ptr1 - buf_ptr2) / sizeof(wchar_t);
+
+ unconv_num2 += wcstombs_org(conv,
+ &buf_ptr2, &buf_left2, to, to_left, args, num_args);
+ if (unconv_num2 < 0)
+ goto ret;
+
+ret:
+ if (buf)
+ Xfree((char *)buf);
+
+ return (unconv_num1 + unconv_num2);
+}
+
+static int
+strtombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -2237,8 +2425,8 @@ strtombs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
- XPointer inbufptr = *from;
- XPointer outbufptr = *to;
+ const char *inbufptr = *from;
+ char *outbufptr = *to;
int from_size = *from_left;
if (*from_left > *to_left)
@@ -2273,16 +2461,37 @@ strtombs(conv, from, from_left, to, to_left, args, num_args)
mb = gi_to_mb(glyph_index, codeset);
if (codeset->parse_info) {
+ Bool need_shift = False;
+ switch (codeset->parse_info->type) {
+ case E_LSL :
+ if (codeset != state->GL_codeset) {
+ need_shift = True;
+ state->GL_codeset = codeset;
+ }
+ break;
+ case E_LSR :
+ if (codeset != state->GR_codeset) {
+ need_shift = True;
+ state->GR_codeset = codeset;
+ }
+ break;
+ /* case E_SS */
+ default:
+ need_shift = True;
+ }
/* output shift sequence */
- encoding = codeset->parse_info->encoding;
- length = strlen(encoding);
- if (*to_left < length)
- break;
- if (outbufptr) {strncpy((char *)outbufptr, encoding, length);}
-
- if (outbufptr) {outbufptr += length;}
- (*to_left) -= length;
+ if (need_shift) {
+ encoding = codeset->parse_info->encoding;
+ length = strlen(encoding);
+ if (*to_left < length)
+ break;
+ if (outbufptr) {
+ strncpy((char *)outbufptr, encoding, length);
+ outbufptr += length;
+ }
+ (*to_left) -= length;
+ }
}
/* output characters */
@@ -2299,22 +2508,22 @@ strtombs(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-strtowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
@@ -2326,7 +2535,7 @@ strtowcs(conv, from, from_left, to, to_left, args, num_args)
int unconv_num = 0;
CodeSet codeset;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *)*to;
int from_size = *from_left;
@@ -2366,27 +2575,27 @@ strtowcs(conv, from, from_left, to, to_left, args, num_args)
} /* end of while */
- *from = *from + from_size;
+ *from = (XPointer) ((const char *) *from + from_size);
*from_left = 0;
- *to = (XPointer)outbufptr;
+ *to = (XPointer) outbufptr;
return unconv_num;
}
static int
-stdc_strtowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XPointer buf = Xmalloc((*from_left) * MB_CUR_MAX);
- XPointer buf_ptr1 = buf;
+ char *buf_ptr1 = buf;
int buf_left1 = (*from_left) * MB_CUR_MAX;
- XPointer buf_ptr2 = buf_ptr1;
+ char *buf_ptr2 = buf_ptr1;
int buf_left2;
int unconv_num1 = 0, unconv_num2 = 0;
@@ -2414,8 +2623,8 @@ ret:
/* -------------------------------------------------------------------------- */
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
if (conv->state) {
Xfree((char *) conv->state);
@@ -2433,9 +2642,9 @@ close_converter(conv)
/* -------------------------------------------------------------------------- */
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
State state;
@@ -2448,8 +2657,7 @@ create_conv(lcd, methods)
if (conv->methods == NULL)
goto err;
*conv->methods = *methods;
- if (XLC_PUBLIC(lcd, is_state_depend))
- conv->methods->reset = init_state;
+ conv->methods->reset = init_state;
conv->state = (XPointer) Xmalloc(sizeof(StateRec));
if (conv->state == NULL)
@@ -2458,7 +2666,8 @@ create_conv(lcd, methods)
state = (State) conv->state;
state->lcd = lcd;
- init_state(conv);
+
+ _XlcResetConverter(conv);
return conv;
@@ -2472,14 +2681,14 @@ static XlcConvMethodsRec mbstocts_methods = {
close_converter,
mbstocts,
NULL
-} ;
+};
static XlcConv
-open_mbstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocts_methods);
}
@@ -2488,14 +2697,14 @@ static XlcConvMethodsRec mbstostr_methods = {
close_converter,
mbstostr,
NULL
-} ;
+};
static XlcConv
-open_mbstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstostr_methods);
}
@@ -2504,14 +2713,14 @@ static XlcConvMethodsRec mbstocs_methods = {
close_converter,
mbstocs,
NULL
-} ;
+};
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocs_methods);
}
@@ -2520,14 +2729,14 @@ static XlcConvMethodsRec mbtocs_methods = {
close_converter,
mbtocs,
NULL
-} ;
+};
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbtocs_methods);
}
@@ -2536,30 +2745,46 @@ static XlcConvMethodsRec ctstombs_methods = {
close_converter,
ctstombs,
NULL
-} ;
+};
static XlcConv
-open_ctstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &ctstombs_methods);
}
+static XlcConvMethodsRec cstombs_methods = {
+ close_converter,
+ cstombs,
+ NULL
+};
+
+static XlcConv
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &cstombs_methods);
+}
+
static XlcConvMethodsRec strtombs_methods = {
close_converter,
strtombs,
NULL
-} ;
+};
static XlcConv
-open_strtombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &strtombs_methods);
}
@@ -2570,14 +2795,14 @@ static XlcConvMethodsRec stdc_mbstowcs_methods = {
close_converter,
stdc_mbstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_mbstowcs_methods);
}
@@ -2586,14 +2811,14 @@ static XlcConvMethodsRec stdc_wcstombs_methods = {
close_converter,
stdc_wcstombs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstombs_methods);
}
@@ -2602,14 +2827,14 @@ static XlcConvMethodsRec stdc_wcstocts_methods = {
close_converter,
stdc_wcstocts,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstocts_methods);
}
@@ -2618,14 +2843,14 @@ static XlcConvMethodsRec stdc_wcstostr_methods = {
close_converter,
stdc_wcstostr,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstostr_methods);
}
@@ -2634,14 +2859,14 @@ static XlcConvMethodsRec stdc_wcstocs_methods = {
close_converter,
stdc_wcstocs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstocs_methods);
}
@@ -2650,14 +2875,14 @@ static XlcConvMethodsRec stdc_wctocs_methods = {
close_converter,
stdc_wctocs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wctocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wctocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wctocs_methods);
}
@@ -2666,30 +2891,46 @@ static XlcConvMethodsRec stdc_ctstowcs_methods = {
close_converter,
stdc_ctstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_ctstowcs_methods);
}
+static XlcConvMethodsRec stdc_cstowcs_methods = {
+ close_converter,
+ stdc_cstowcs,
+ NULL
+};
+
+static XlcConv
+open_stdc_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &stdc_cstowcs_methods);
+}
+
static XlcConvMethodsRec stdc_strtowcs_methods = {
close_converter,
stdc_strtowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_strtowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_strtowcs_methods);
}
@@ -2700,14 +2941,14 @@ static XlcConvMethodsRec mbstowcs_methods = {
close_converter,
mbstowcs_org,
NULL
-} ;
+};
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstowcs_methods);
}
@@ -2716,14 +2957,14 @@ static XlcConvMethodsRec wcstombs_methods = {
close_converter,
wcstombs_org,
NULL
-} ;
+};
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstombs_methods);
}
@@ -2732,14 +2973,14 @@ static XlcConvMethodsRec wcstocts_methods = {
close_converter,
wcstocts,
NULL
-} ;
+};
static XlcConv
-open_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocts_methods);
}
@@ -2748,14 +2989,14 @@ static XlcConvMethodsRec wcstostr_methods = {
close_converter,
wcstostr,
NULL
-} ;
+};
static XlcConv
-open_wcstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstostr_methods);
}
@@ -2764,14 +3005,14 @@ static XlcConvMethodsRec wcstocs_methods = {
close_converter,
wcstocs,
NULL
-} ;
+};
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocs_methods);
}
@@ -2780,14 +3021,14 @@ static XlcConvMethodsRec wctocs_methods = {
close_converter,
wctocs,
NULL
-} ;
+};
static XlcConv
-open_wctocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wctocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wctocs_methods);
}
@@ -2796,30 +3037,46 @@ static XlcConvMethodsRec ctstowcs_methods = {
close_converter,
ctstowcs,
NULL
-} ;
+};
static XlcConv
-open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &ctstowcs_methods);
}
+static XlcConvMethodsRec cstowcs_methods = {
+ close_converter,
+ cstowcs,
+ NULL
+};
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &cstowcs_methods);
+}
+
static XlcConvMethodsRec strtowcs_methods = {
close_converter,
strtowcs,
NULL
-} ;
+};
static XlcConv
-open_strtowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &strtowcs_methods);
}
@@ -2829,24 +3086,30 @@ open_strtowcs(from_lcd, from_type, to_lcd, to_type)
/* -------------------------------------------------------------------------- */
XLCd
-_XlcGenericLoader(name)
- char *name;
+_XlcGenericLoader(
+ const char *name)
{
XLCd lcd;
+#ifdef STDCVT
XLCdGenericPart *gen;
+#endif
lcd = _XlcCreateLC(name, _XlcGenericMethods);
if (lcd == NULL)
return lcd;
+ default_GL_charset = _XlcGetCharSet("ISO8859-1:GL");
+ default_GR_charset = _XlcGetCharSet("ISO8859-1:GR");
+
_XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
_XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_mbstostr);
_XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
_XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
_XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
_XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtombs);
-
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
+
#ifdef STDCVT
gen = XLC_GENERIC_PART(lcd);
@@ -2860,6 +3123,7 @@ _XlcGenericLoader(name)
_XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wctocs);
_XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
_XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
#ifdef STDCVT
}
#endif
@@ -2874,9 +3138,11 @@ _XlcGenericLoader(name)
_XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_stdc_wctocs);
_XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_stdc_ctstowcs);
_XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_stdc_strtowcs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_stdc_cstowcs);
}
#endif
+ _XlcAddUtf8Converters(lcd);
+
return lcd;
}
-
diff --git a/modules/lc/xlocale/lcEuc.c b/modules/lc/xlocale/lcEuc.c
index 2027302f..5f1248ca 100644
--- a/modules/lc/xlocale/lcEuc.c
+++ b/modules/lc/xlocale/lcEuc.c
@@ -30,6 +30,14 @@ OF THIS SOFTWARE.
Yoshiyuki Segawa (segawa@ossi.com)
*****************************************************************/
+/* $XFree86: xc/lib/X11/lcEuc.c,v 3.12 2003/01/20 04:05:30 dawes Exp $ */
+
+/*
+ * An EUC locale.
+ * Supports: all locales with codeset eucJP, eucKR, eucCN, eucTW.
+ * How: Provides converters for euc*.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
#ifdef X_LOCALE
@@ -68,8 +76,8 @@ typedef unsigned char Uchar;
typedef unsigned long Ulong;
typedef unsigned int Uint;
-static CodeSet GetCodeSetFromCharSet();
-static CodeSet wc_codeset();
+static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
@@ -84,36 +92,35 @@ static CodeSet wc_codeset();
*/
static int
-euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
-
XLCd lcd = (XLCd)conv->state;
- register Uchar ch;
- register int chr_len = 0;
- register int sshift = False;
- register int shift_mult = 0;
- register Uint chrcode;
+ Uchar ch;
+ int chr_len = 0;
+ int sshift = False;
+ int shift_mult = 0;
+ Uint chrcode;
Uint wc_encode = 0;
Uint wc_tmp = 0;
int cs0flg = False;
int cs1flg = False;
- int length;
+ int length = 0;
int num_conv;
int unconv_num = 0;
Bool new_char;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
@@ -121,7 +128,6 @@ euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
int codeset_num = XLC_GENERIC(lcd, codeset_num);
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -238,20 +244,20 @@ euc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- wchar_t *inbufptr = (wchar_t *) *from;
- register XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
XPointer outbuf_base = outbufptr;
wchar_t wch;
- register int length;
+ int length;
Uchar tmp;
int num_conv;
int unconv_num = 0;
@@ -260,7 +266,6 @@ euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -301,14 +306,14 @@ euc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
XlcCharSet charset;
@@ -317,8 +322,8 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
int length;
int unconv_num = 0;
int min_ch = 0;
- register char *src = *from, *dst = *to;
-
+ const char *src = *from;
+ char *dst = *to;
if (isleftside(*src)) { /* 7-bit (CS0) */
if (ASCII_CODESET >= codeset_num)
@@ -374,7 +379,7 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
} while (--length);
*to = dst;
- *from = src;
+ *from = (XPointer) src;
*from_left -= charset->char_size;
*to_left -= charset->char_size - length;
@@ -386,22 +391,22 @@ euc_mbtocs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- char *tmp_from, *tmp_to;
+ const char *tmp_from;
+ char *tmp_to;
int tmp_from_left, tmp_to_left;
XlcCharSet charset, tmp_charset;
XPointer tmp_args[1];
int unconv_num = 0, ret;
-
/* Determine the charset of the segment and convert one characater: */
tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
@@ -416,12 +421,11 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
tmp_to_left = *to_left;
tmp_to = *to;
-
/* Convert remainder of the segment: */
tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = euc_mbtocs(conv, &tmp_from, &tmp_from_left, &tmp_to,
- &tmp_to_left, tmp_args, 1)) >= 0 ) {
+ while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
if (ret > 0) {
unconv_num += ret;
@@ -431,9 +435,9 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
if (tmp_charset != charset) /* quit on end of segment */
break;
- *from = tmp_from;
+ *from = (XPointer) tmp_from;
*from_left = tmp_from_left;
- *to = tmp_to;
+ *to = (XPointer) tmp_to;
*to_left = tmp_to_left;
}
@@ -445,26 +449,25 @@ euc_mbstocs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- wchar_t *wcptr = (wchar_t *) *from;
- register char *bufptr = (char *) *to;
+ const wchar_t *wcptr = (const wchar_t *) *from;
+ char *bufptr = (char *) *to;
wchar_t wch;
char *tmpptr;
- register int length;
+ int length;
CodeSet codeset;
Ulong wc_encoding;
int wcstr_len = *from_left, buf_len = *to_left;
-
if (!(codeset = wc_codeset(lcd, *wcptr)))
return -1;
@@ -506,25 +509,24 @@ euc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- register char *csptr = *from;
- register char *bufptr = *to;
+ const char *csptr = *from;
+ char *bufptr = *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
int length;
CodeSet codeset;
int cvt_length;
-
if (num_args < 1)
return -1;
@@ -556,7 +558,7 @@ euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
if (bufptr)
*to += cvt_length;
*to_left -= cvt_length;
@@ -566,26 +568,25 @@ euc_cstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- register char *csptr = *from;
+ const char *csptr = *from;
wchar_t *bufptr = (wchar_t *) *to;
wchar_t *toptr = (wchar_t *) *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
wchar_t wch;
int length;
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
CodeSet codeset;
-
if (num_args < 1)
return -1;
@@ -617,21 +618,20 @@ euc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
}
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
return 0;
}
static CodeSet
-wc_codeset(lcd, wch)
- XLCd lcd;
- wchar_t wch;
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
{
-
- register CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- register int end = XLC_GENERIC(lcd, codeset_num);
- register Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
for (; --end >= 0; codesets++)
if ( widech == (*codesets)->wc_encoding )
@@ -642,13 +642,13 @@ wc_codeset(lcd, wch)
static CodeSet
-GetCodeSetFromCharSet(lcd, charset)
- XLCd lcd;
- XlcCharSet charset;
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
{
- register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- register XlcCharSet *charset_list;
- register int codeset_num, num_charsets;
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -666,9 +666,9 @@ GetCodeSetFromCharSet(lcd, charset)
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
@@ -756,8 +756,8 @@ static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
* initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
*/
static void
-initCTptr(lcd)
- XLCd lcd;
+initCTptr(
+ XLCd lcd)
{
int num_codesets = XLC_GENERIC(lcd, codeset_num);
int num_charsets;
@@ -810,27 +810,26 @@ initCTptr(lcd)
#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
static int
-euc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- register XPointer inbufptr = *from;
- XPointer inbuf_base;
- register wchar_t *outbufptr = (wchar_t *) *to;
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
- register int clen, length;
- int num_conv;
+ int clen, length;
int unconv_num = 0;
unsigned int ct_seglen = 0;
Uchar ct_type = 0;
- register int shift_mult;
+ int shift_mult;
wchar_t wc_tmp;
wchar_t wch;
Ulong wc_encoding;
@@ -939,22 +938,22 @@ euc_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
#define userdef (codeset->cs_num == 3)
static int
-euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
- register wchar_t *inbufptr = (wchar_t *) *from;
- register char *ctptr = *to;
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
wchar_t wch;
- register int length;
- register int unconv_num = 0;
+ int length;
+ int unconv_num = 0;
Uchar tmp;
Uchar t1 = 0;
int num_conv;
@@ -965,7 +964,6 @@ euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
/* Initial State: */
ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
ct_state.GR_charset = NULL;
@@ -1077,22 +1075,21 @@ euc_wcstocts(conv, from, from_left, to, to_left, args, num_args)
#define userdef (ctdp == ctdptr[Userdef])
static int
-euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register XPointer inbufptr = *from;
- register XPointer outbufptr = *to;
- XPointer inbuf_base;
+ char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
XPointer outbuf_base = outbufptr;
- register int clen, length;
+ int clen, length;
int unconv_num = 0;
- int num_conv;
unsigned int ct_seglen = 0;
Uchar ct_type = 0;
CTData ctdp = &ctdata[0]; /* default */
@@ -1168,8 +1165,9 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
clen = length;
do {
- if (byte1)
+ if (byte1) {
if (kanji) {
+ /* FIXME: assignment of read-only location */
*inbufptr = BIT8ON(*inbufptr);
*(inbufptr+1) = BIT8ON(*(inbufptr+1));
}
@@ -1179,6 +1177,7 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
}
(*to_left)--;
}
+ }
if (save_outbuf == True) {
*outbufptr++ = *inbufptr;
}
@@ -1205,22 +1204,22 @@ euc_ctstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+euc_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
+ int ct_len = *to_left;
int cs_num;
- int clen, length;
+ int clen, length = 0;
int unconv_num = 0;
int num_conv;
- XPointer inbufptr = *from;
- register char *ctptr = *to;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
StateRec ct_state;
@@ -1228,7 +1227,6 @@ euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
XLCd lcd = (XLCd) conv->state;
int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
/* Initial State: */
ct_state.GL_charset = NULL;
ct_state.GR_charset = NULL;
@@ -1325,8 +1323,8 @@ euc_mbstocts(conv, from, from_left, to, to_left, args, num_args)
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
Xfree((char *) conv);
}
@@ -1350,122 +1348,118 @@ static XlcConvMethodsRec conv_methods[] = {
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCS]);
}
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCS]);
}
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBTOCS]);
}
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOMBS]);
}
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOWCS]);
}
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
}
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
}
static XlcConv
-open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
}
static XlcConv
-open_ctstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
}
static XlcConv
-open_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
}
static XlcConv
-open_mbstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
}
XLCd
-#ifdef DYNAMIC_LOAD
-_XlcGenericLoader(name)
-#else
-_XlcEucLoader(name)
-#endif
- char *name;
+_XlcEucLoader(
+ const char *name)
{
XLCd lcd;
@@ -1473,7 +1467,6 @@ _XlcEucLoader(name)
if (lcd == NULL)
return lcd;
-
if (!XLC_PUBLIC_PART(lcd)->codeset ||
(_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
_XlcDestroyLC(lcd);
@@ -1497,6 +1490,8 @@ _XlcEucLoader(name)
_XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
#endif
+ _XlcAddUtf8Converters(lcd);
+
return lcd;
}
diff --git a/modules/lc/xlocale/lcJis.c b/modules/lc/xlocale/lcJis.c
index eae9ee95..161dbb28 100644
--- a/modules/lc/xlocale/lcJis.c
+++ b/modules/lc/xlocale/lcJis.c
@@ -23,6 +23,14 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcJis.c,v 1.10 2003/01/20 04:05:31 dawes Exp $ */
+
+/*
+ * A Japanese JIS locale.
+ * Supports: all locales with codeset JIS7.
+ * How: Provides converters for JIS.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
#ifdef X_LOCALE
@@ -30,7 +38,7 @@
#include "XlcGeneric.h"
#include <stdio.h>
-#if !defined(X_NOT_STDC_ENV) && !defined(macII) && !defined(X_LOCALE)
+#if !defined(macII) && !defined(X_LOCALE)
#define STDCVT
#endif
@@ -42,12 +50,12 @@ typedef struct _StateRec {
} StateRec, *State;
static void
-init_state(conv)
- XlcConv conv;
+init_state(
+ XlcConv conv)
{
- register State state = (State) conv->state;
- register XLCdGenericPart *gen = XLC_GENERIC_PART(state->lcd);
- register CodeSet codeset;
+ State state = (State) conv->state;
+ XLCdGenericPart *gen = XLC_GENERIC_PART(state->lcd);
+ CodeSet codeset;
codeset = gen->initial_state_GL;
if (codeset && codeset->charset_list)
@@ -57,17 +65,17 @@ init_state(conv)
state->GR_charset = *codeset->charset_list;
if (state->GL_charset == NULL)
- if (codeset = *gen->codeset_list)
+ if ((codeset = *gen->codeset_list) != NULL)
state->GL_charset = *codeset->charset_list;
}
static int
-compare(src, encoding, length)
- register char *src;
- register char *encoding;
- register int length;
+compare(
+ const char *src,
+ const char *encoding,
+ int length)
{
- char *start = src;
+ const char *start = src;
while (length-- > 0) {
if (*src++ != *encoding++)
@@ -80,32 +88,34 @@ compare(src, encoding, length)
}
static int
-mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- register char *src, *dst;
- unsigned char ch, *mb_parse_table;
+ const char *src;
+ char *dst;
+ unsigned char *mb_parse_table;
ParseInfo *parse_list, parse_info;
XlcCharSet charset;
int length, number, encoding_len = 0;
- register int i;
+ int i;
- src = *((char **) from);
+ src = *((const char **) from);
dst = *((char **) to);
- if (mb_parse_table = XLC_GENERIC(lcd, mb_parse_table)) {
+ mb_parse_table = XLC_GENERIC(lcd, mb_parse_table);
+ if (mb_parse_table != NULL) {
number = mb_parse_table[(unsigned char) *src];
if (number > 0) {
parse_list = XLC_GENERIC(lcd, mb_parse_list) + number - 1;
- for ( ; parse_info = *parse_list; parse_list++) {
+ for ( ; (parse_info = *parse_list) != NULL; parse_list++) {
encoding_len = compare(src, parse_info->encoding, *from_left);
if (encoding_len > 0) {
switch (parse_info->type) {
@@ -129,6 +139,8 @@ mbtocs(conv, from, from_left, to, to_left, args, num_args)
case E_GR:
charset = state->GR_charset;
goto found;
+ default:
+ break;
}
}
}
@@ -176,14 +188,14 @@ end:
}
static int
-mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XlcCharSet charset = NULL;
XPointer tmp_args[2], save_from = *from;
@@ -212,13 +224,13 @@ mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static CodeSet
-wc_parse_codeset(lcd, wcstr)
- XLCd lcd;
- wchar_t *wcstr;
+wc_parse_codeset(
+ XLCd lcd,
+ const wchar_t *wcstr)
{
- register CodeSet *codeset;
+ CodeSet *codeset;
unsigned long wc_encoding;
- register int num;
+ int num;
wc_encoding = *wcstr & XLC_GENERIC(lcd, wc_encode_mask);
num = XLC_GENERIC(lcd, codeset_num);
@@ -233,22 +245,22 @@ wc_parse_codeset(lcd, wcstr)
}
static int
-wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- wchar_t *wcptr;
- register char *bufptr;
- register wchar_t wch;
+ const wchar_t *wcptr;
+ char *bufptr;
+ wchar_t wch;
char *tmpptr;
- register int length;
+ int length;
CodeSet codeset;
unsigned long wc_encoding;
int wcstr_len, buf_len;
@@ -256,7 +268,7 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
if (from == NULL || *from == NULL)
return 0;
- wcptr = *((wchar_t **) from);
+ wcptr = *((const wchar_t **) from);
bufptr = *((char **) to);
wcstr_len = *from_left;
buf_len = *to_left;
@@ -309,13 +321,13 @@ wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static CodeSet
-GetCodeSetFromCharSet(lcd, charset)
- XLCd lcd;
- XlcCharSet charset;
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
{
- register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- register XlcCharSet *charset_list;
- register int codeset_num, num_charsets;
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -332,27 +344,27 @@ GetCodeSetFromCharSet(lcd, charset)
}
static int
-cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
- register char *csptr;
- register char *bufptr;
+ const char *csptr;
+ char *bufptr;
int csstr_len;
- register int buf_len;
+ int buf_len;
int num, encoding_len = 0;
CodeSet codeset;
XlcCharSet charset;
EncodingType type;
int cvt_length;
- csptr = *((char **) from);
+ csptr = *((const char **) from);
bufptr = *((char **) to);
csstr_len = *from_left;
buf_len = *to_left;
@@ -396,6 +408,8 @@ cstombs(conv, from, from_left, to, to_left, args, num_args)
else
state->GR_charset = charset;
break;
+ default:
+ break;
}
}
@@ -436,27 +450,27 @@ cstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XLCd lcd = state->lcd;
- register char *csptr;
+ const char *csptr;
wchar_t *bufptr;
int csstr_len;
- register int buf_len;
- register wchar_t wch;
+ int buf_len;
+ wchar_t wch;
unsigned long code_mask, wc_encoding;
int num, length, wc_shift_bits;
CodeSet codeset;
- csptr = *((char **) from);
+ csptr = *((const char **) from);
bufptr = *((wchar_t **) to);
csstr_len = *from_left;
buf_len = *to_left;
@@ -501,8 +515,8 @@ cstowcs(conv, from, from_left, to, to_left, args, num_args)
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
if (conv->state) {
Xfree((char *) conv->state);
@@ -512,9 +526,9 @@ close_converter(conv)
}
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
State state;
@@ -551,14 +565,14 @@ static XlcConvMethodsRec mbstocs_methods = {
close_converter,
mbstocs,
NULL
-} ;
+};
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbstocs_methods);
}
@@ -567,14 +581,14 @@ static XlcConvMethodsRec wcstocs_methods = {
close_converter,
wcstocs,
NULL
-} ;
+};
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &wcstocs_methods);
}
@@ -583,14 +597,14 @@ static XlcConvMethodsRec mbtocs_methods = {
close_converter,
mbtocs,
NULL
-} ;
+};
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &mbtocs_methods);
}
@@ -599,14 +613,14 @@ static XlcConvMethodsRec cstombs_methods = {
close_converter,
cstombs,
NULL
-} ;
+};
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstombs_methods);
}
@@ -615,30 +629,30 @@ static XlcConvMethodsRec cstowcs_methods = {
close_converter,
cstowcs,
NULL
-} ;
+};
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &cstowcs_methods);
}
#ifdef STDCVT
static int
-stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- char *src = *((char **) from);
+ const char *src = *((const char **) from);
wchar_t *dst = *((wchar_t **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -675,16 +689,16 @@ stdc_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- wchar_t *src = *((wchar_t **) from);
+ const wchar_t *src = *((const wchar_t **) from);
char *dst = *((char **) to);
int src_left = *from_left;
int dst_left = *to_left;
@@ -719,16 +733,17 @@ stdc_wcstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- wchar_t wch, *src = *((wchar_t **) from);
+ const wchar_t *src = *((const wchar_t **) from);
+ wchar_t wch;
XlcCharSet charset = NULL;
XPointer tmp_args[2], tmp_from, save_from = *from;
char tmp[32];
@@ -779,14 +794,14 @@ stdc_wcstocs(conv, from, from_left, to, to_left, args, num_args)
#define FreeLocalBuf(ptr) if (ptr != local_buf) Xfree(ptr)
static int
-stdc_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+stdc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = ((State) conv->state)->lcd;
DefineLocalBuf;
@@ -817,14 +832,14 @@ static XlcConvMethodsRec stdc_mbstowcs_methods = {
close_converter,
stdc_mbstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_mbstowcs_methods);
}
@@ -833,14 +848,14 @@ static XlcConvMethodsRec stdc_wcstombs_methods = {
close_converter,
stdc_wcstombs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstombs_methods);
}
@@ -849,14 +864,14 @@ static XlcConvMethodsRec stdc_wcstocs_methods = {
close_converter,
stdc_wcstocs,
NULL
-} ;
+};
static XlcConv
-open_stdc_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_wcstocs_methods);
}
@@ -865,25 +880,27 @@ static XlcConvMethodsRec stdc_cstowcs_methods = {
close_converter,
stdc_cstowcs,
NULL
-} ;
+};
static XlcConv
-open_stdc_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_stdc_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &stdc_cstowcs_methods);
}
#endif /* STDCVT */
XLCd
-_XlcJisLoader(name)
- char *name;
+_XlcJisLoader(
+ const char *name)
{
XLCd lcd;
+#ifdef STDCVT
XLCdGenericPart *gen;
+#endif
lcd = _XlcCreateLC(name, _XlcGenericMethods);
if (lcd == NULL)
@@ -917,6 +934,8 @@ _XlcJisLoader(name)
}
#endif
+ _XlcAddUtf8Converters(lcd);
+
return lcd;
}
diff --git a/modules/lc/xlocale/lcSjis.c b/modules/lc/xlocale/lcSjis.c
index 95d9ed8d..29e7e19e 100644
--- a/modules/lc/xlocale/lcSjis.c
+++ b/modules/lc/xlocale/lcSjis.c
@@ -35,6 +35,14 @@ OR PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
*****************************************************************/
+/* $XFree86: xc/lib/X11/lcSjis.c,v 3.10 2003/01/20 04:05:31 dawes Exp $ */
+
+/*
+ * A Japanese SJIS locale.
+ * Supports: all locales with codeset SJIS.
+ * How: Provides converters for SJIS.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
#ifdef X_LOCALE
@@ -92,9 +100,9 @@ typedef unsigned int Uint;
#define BIT8ON(c) ((c) | GR)
-static void jis_to_sjis();
-static void sjis_to_jis();
-static CodeSet wc_codeset();
+static void jis_to_sjis (Uchar *p1, Uchar *p2);
+static void sjis_to_jis (Uchar *p1, Uchar *p2);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
/*
@@ -114,21 +122,21 @@ static CodeSet wc_codeset();
static int
-sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
- register int chr_len = 0;
- register int shift_mult = 0;
- register Uint chrcode = 0;
+ int chr_len = 0;
+ int shift_mult = 0;
+ Uint chrcode = 0;
Uchar ch, ch2;
Uint wc_encode = 0;
@@ -137,11 +145,11 @@ sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
Bool new_char;
int firstbyte;
- int length;
+ int length = 0;
int num_conv;
int unconv_num = 0;
- XPointer inbufptr = *from;
+ const char *inbufptr = *from;
wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
@@ -149,7 +157,6 @@ sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
int codeset_num = XLC_GENERIC(lcd, codeset_num);
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -254,20 +261,20 @@ sjis_mbstowcs(conv, from, from_left, to, to_left, args, num_args)
#define byte2 (byte1 == 0)
static int
-sjis_wcstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register wchar_t *inbufptr = (wchar_t *) *from;
- register XPointer outbufptr = *to;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
XPointer outbuf_base = outbufptr;
wchar_t wch;
- register int length;
+ int length;
Uchar tmp;
Uchar t1, t2;
int num_conv;
@@ -277,8 +284,6 @@ sjis_wcstombs(conv, from, from_left, to, to_left, args, num_args)
CodeSet codeset;
Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -333,43 +338,43 @@ sjis_wcstombs(conv, from, from_left, to, to_left, args, num_args)
* sjis<->jis conversion for widechar kanji (See Note at top of file)
*/
static void
-sjis_to_jis(p1, p2)
- Uchar *p1;
- Uchar *p2;
+sjis_to_jis(
+ Uchar *p1,
+ Uchar *p2)
{
- register Uchar c1 = *p1;
- register Uchar c2 = *p2;
- register Uchar adjust = c2 < 0x9f;
- register Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
- register Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar adjust = c2 < 0x9f;
+ Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
+ Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
*p1 = ((c1 - rowOffset) << 1) - adjust;
*p2 -= cellOffset;
}
static void
-jis_to_sjis(p1, p2)
- Uchar *p1;
- Uchar *p2;
+jis_to_sjis(
+ Uchar *p1,
+ Uchar *p2)
{
- register Uchar c1 = *p1;
- register Uchar c2 = *p2;
- register Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
- register Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
+ Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
*p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
*p2 = c2 + cellOffset;
}
static CodeSet
-wc_codeset(lcd, wch)
- XLCd lcd;
- wchar_t wch;
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
{
- register CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
#if !defined(__sony_news) || defined(SVR4)
- register int end = XLC_GENERIC(lcd, codeset_num);
- register Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
for (; --end >= 0; codesets++)
if ( widech == (*codesets)->wc_encoding )
@@ -387,24 +392,24 @@ wc_codeset(lcd, wch)
static int
-sjis_mbtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
XlcCharSet charset = NULL;
int char_size = 0;
int unconv_num = 0;
- register char *src = *from, *dst = *to;
+ const char *src = *from;
+ char *dst = *to;
CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
if (iskanji(*src)) {
if (KANJI_CODESET >= codeset_num)
return -1;
@@ -463,8 +468,8 @@ sjis_mbtocs(conv, from, from_left, to, to_left, args, num_args)
*from_left -= char_size;
*to_left -= char_size;
- *to = dst;
- *from = src;
+ *to = (XPointer) dst;
+ *from = (XPointer) src;
if (num_args > 0)
*((XlcCharSet *) args[0]) = charset;
@@ -474,23 +479,22 @@ sjis_mbtocs(conv, from, from_left, to, to_left, args, num_args)
static int
-sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- char *tmp_from, *tmp_to;
+ const char *tmp_from;
+ char *tmp_to;
int tmp_from_left, tmp_to_left;
XlcCharSet charset, tmp_charset;
XPointer tmp_args[1];
int unconv_num = 0, ret;
-
-
/* Determine the charset of the segment and convert one character: */
tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
@@ -508,8 +512,8 @@ sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
/* Convert remainder of the segment: */
tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = sjis_mbtocs(conv, &tmp_from, &tmp_from_left, &tmp_to,
- &tmp_to_left, tmp_args, 1)) >= 0 ) {
+ while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
if (ret > 0) {
unconv_num += ret;
@@ -519,9 +523,9 @@ sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
if (tmp_charset != charset) /* quit on end of segment */
break;
- *from = tmp_from;
+ *from = (XPointer) tmp_from;
*from_left = tmp_from_left;
- *to = tmp_to;
+ *to = (XPointer) tmp_to;
*to_left = tmp_to_left;
}
@@ -532,27 +536,26 @@ sjis_mbstocs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-sjis_wcstocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd) conv->state;
- wchar_t *wcptr = *((wchar_t **)from);
- register char *bufptr = *((char **) to);
+ const wchar_t *wcptr = *((const wchar_t **)from);
+ char *bufptr = *((char **) to);
wchar_t wch;
char *tmpptr;
- register int length;
+ int length;
CodeSet codeset;
Ulong wc_encoding;
int buf_len = *to_left;
int wcstr_len = *from_left;
-
if (!(codeset = wc_codeset(lcd, *wcptr)))
return -1;
@@ -612,13 +615,13 @@ sjis_wcstocs(conv, from, from_left, to, to_left, args, num_args)
}
static CodeSet
-GetCodeSetFromCharSet(lcd, charset)
- XLCd lcd;
- XlcCharSet charset;
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
{
- register CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- register XlcCharSet *charset_list;
- register int codeset_num, num_charsets;
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
codeset_num = XLC_GENERIC(lcd, codeset_num);
@@ -636,26 +639,24 @@ GetCodeSetFromCharSet(lcd, charset)
static int
-sjis_cstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- char **from;
- int *from_left;
- char **to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_cstombs(
+ XlcConv conv,
+ char **from,
+ int *from_left,
+ char **to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd) conv->state;
- register char *csptr = *from;
- register char *bufptr = *to;
+ const char *csptr = *from;
+ char *bufptr = *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
int length;
CodeSet codeset;
- EncodingType type;
int cvt_length = 0;
-
if (num_args < 1)
return -1;
@@ -682,7 +683,7 @@ sjis_cstombs(conv, from, from_left, to, to_left, args, num_args)
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
if (bufptr)
*to += cvt_length;
@@ -693,27 +694,26 @@ sjis_cstombs(conv, from, from_left, to, to_left, args, num_args)
}
static int
-sjis_cstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd) conv->state;
- register char *csptr = (char *) *from;
+ const char *csptr = (const char *) *from;
wchar_t *bufptr = (wchar_t *) *to;
wchar_t *toptr = (wchar_t *) *to;
int csstr_len = *from_left;
- register int buf_len = *to_left;
+ int buf_len = *to_left;
wchar_t wch;
int length;
Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
CodeSet codeset;
-
if (num_args < 1)
return -1;
@@ -745,7 +745,7 @@ sjis_cstowcs(conv, from, from_left, to, to_left, args, num_args)
}
*from_left -= csptr - *from;
- *from = csptr;
+ *from = (XPointer) csptr;
return 0;
}
@@ -828,8 +828,8 @@ static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
* initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
*/
static void
-initCTptr(lcd)
- XLCd lcd;
+initCTptr(
+ XLCd lcd)
{
int num_codesets = XLC_GENERIC(lcd, codeset_num);
int num_charsets;
@@ -874,36 +874,34 @@ initCTptr(lcd)
static int
-sjis_mbstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
+ int ct_len = *to_left;
int cs_num;
int clen;
int unconv_num = 0;
int num_conv;
- XPointer inbufptr = *from;
- register char *ctptr = *to;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
StateRec ct_state;
- CTData charset;
+ CTData charset = NULL;
XLCd lcd = (XLCd) conv->state;
int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
/* Initial State: */
ct_state.GL_charset = ctdptr[Ascii];
ct_state.GR_charset = NULL;
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1009,21 +1007,21 @@ sjis_mbstocts(conv, from, from_left, to, to_left, args, num_args)
#define byte2 (byte1 == 0)
static int
-sjis_wcstocts(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register int ct_len = *to_left;
- register wchar_t *inbufptr = (wchar_t *) *from;
- register char *ctptr = *to;
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
XPointer ct_base = ctptr;
wchar_t wch;
- register int length;
+ int length;
Uchar tmp;
Uchar t1 = 0;
int num_conv;
@@ -1130,27 +1128,26 @@ sjis_wcstocts(conv, from, from_left, to, to_left, args, num_args)
#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
static int
-sjis_ctstombs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register XPointer inbufptr = *from;
- register XPointer outbufptr = *to;
- XPointer inbuf_base;
+ const char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
XPointer outbuf_base = outbufptr;
- register int clen, length;
+ int clen, length;
int unconv_num = 0;
int num_conv;
unsigned int ct_seglen = 0;
Uchar ct_type;
CTData ctdp = ctdata; /* default */
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1243,33 +1240,32 @@ sjis_ctstombs(conv, from, from_left, to, to_left, args, num_args)
static int
-sjis_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+sjis_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
XLCd lcd = (XLCd)conv->state;
Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- register XPointer inbufptr = *from;
- XPointer inbuf_base;
- register wchar_t *outbufptr = (wchar_t *) *to;
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
wchar_t *outbuf_base = outbufptr;
- register int clen, length;
+ int clen, length;
int num_conv;
int unconv_num = 0;
unsigned int ct_seglen = 0;
Uchar ct_type = 0;
- register int shift_mult;
+ int shift_mult;
wchar_t wc_tmp;
wchar_t wch;
Ulong wc_encoding;
CTData ctdp = ctdata;
-
if (*from_left > *to_left)
*from_left = *to_left;
@@ -1375,17 +1371,17 @@ sjis_ctstowcs(conv, from, from_left, to, to_left, args, num_args)
#undef BADCHAR
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
Xfree((char *) conv);
}
static XlcConv
-create_conv(lcd, methods)
- XLCd lcd;
- XlcConvMethods methods;
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
{
XlcConv conv;
@@ -1418,118 +1414,118 @@ static XlcConvMethodsRec conv_methods[] = {
static XlcConv
-open_mbstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCS]);
}
static XlcConv
-open_wcstocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCS]);
}
static XlcConv
-open_mbtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBTOCS]);
}
static XlcConv
-open_cstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOMBS]);
}
static XlcConv
-open_cstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CSTOWCS]);
}
static XlcConv
-open_mbstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
}
static XlcConv
-open_wcstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
}
static XlcConv
-open_wcstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
}
static XlcConv
-open_mbstocts(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
}
static XlcConv
-open_ctstombs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
}
static XlcConv
-open_ctstowcs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
}
XLCd
-_XlcSjisLoader(name)
- char *name;
+_XlcSjisLoader(
+ const char *name)
{
XLCd lcd;
@@ -1560,6 +1556,7 @@ _XlcSjisLoader(name)
_XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
#endif
+ _XlcAddUtf8Converters(lcd);
return lcd;
}
diff --git a/modules/om/generic/omDefault.c b/modules/om/generic/omDefault.c
index 5d913464..2701d861 100644
--- a/modules/om/generic/omDefault.c
+++ b/modules/om/generic/omDefault.c
@@ -28,6 +28,7 @@
* This is source code modified by FUJITSU LIMITED under the Joint
* Development Agreement for the CDE/Motif PST.
*/
+/* $XFree86: xc/lib/X11/omDefault.c,v 1.5 2001/01/17 19:41:56 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -43,27 +44,45 @@ static Bool
wcs_to_mbs(oc, to, from, length)
XOC oc;
char *to;
- wchar_t *from;
+ _Xconst wchar_t *from;
int length;
{
- XlcConv conv = XOC_GENERIC(oc)->wcs_to_cs;
- XLCd lcd;
- int ret, to_left = length;
-
- if (conv == NULL) {
- lcd = oc->core.om->core.lcd;
- conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
- if (conv == NULL)
- return False;
- XOC_GENERIC(oc)->wcs_to_cs = conv;
- } else
- _XlcResetConverter(conv);
+ XlcConv conv;
+ int to_left, ret;
+ conv = _XomInitConverter(oc, XOMWideChar);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
&to_left, NULL, 0);
if (ret != 0 || length > 0)
return False;
-
+
+ return True;
+}
+
+static Bool
+utf8_to_mbs(oc, to, from, length)
+ XOC oc;
+ char *to;
+ _Xconst char *from;
+ int length;
+{
+ XlcConv conv;
+ int to_left, ret;
+
+ conv = _XomInitConverter(oc, XOMUtf8String);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
+ ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
+ &to_left, NULL, 0);
+ if (ret != 0 || length > 0)
+ return False;
+
return True;
}
@@ -73,7 +92,7 @@ _XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length)
#else
_XmbDefaultTextEscapement(oc, text, length)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -86,7 +105,7 @@ _XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
#else
_XwcDefaultTextEscapement(oc, text, length)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
@@ -97,8 +116,40 @@ _XwcDefaultTextEscapement(oc, text, length)
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
+
+ ret = _XmbDefaultTextEscapement(oc, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length)
+#else
+_Xutf8DefaultTextEscapement(oc, text, length)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
ret = _XmbDefaultTextEscapement(oc, buf, length);
@@ -115,7 +166,7 @@ _XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
#else
_XmbDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -151,7 +202,7 @@ _XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
#else
_XwcDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -164,8 +215,43 @@ _XwcDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
+
+ ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+#else
+_Xutf8DefaultTextExtents(oc, text, length, overall_ink, overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
@@ -186,7 +272,7 @@ _XmbDefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
_XmbDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
num_chars, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -270,7 +356,7 @@ _XwcDefaultTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
_XwcDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
num_chars, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -287,8 +373,54 @@ _XwcDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+Status
+#if NeedFunctionPrototypes
+_Xutf8DefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+#else
+_Xutf8DefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *ink_buf;
+ XRectangle *logical_buf;
+ int buf_size;
+ int *num_chars;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ Status ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
buf_size, num_chars, overall_ink,
@@ -311,7 +443,7 @@ _XmbDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -334,7 +466,7 @@ _XwcDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
@@ -345,8 +477,45 @@ _XwcDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
if (buf == NULL)
return 0;
- if (wcs_to_mbs(oc, buf, text, length) == False)
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
goto err;
+ }
+
+ ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+#else
+_Xutf8DefaultDrawString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
@@ -367,7 +536,7 @@ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -386,7 +555,7 @@ _XwcDefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
@@ -404,3 +573,33 @@ _XwcDefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
err:
FreeLocalBuf(buf);
}
+
+void
+#if NeedFunctionPrototypes
+_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+#else
+_Xutf8DefaultDrawImageString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+
+ if (buf == NULL)
+ return;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False)
+ goto err;
+
+ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+}
diff --git a/modules/om/generic/omGeneric.c b/modules/om/generic/omGeneric.c
index a4fdb02f..21986a29 100644
--- a/modules/om/generic/omGeneric.c
+++ b/modules/om/generic/omGeneric.c
@@ -1,4 +1,5 @@
/* $Xorg: omGeneric.c,v 1.6 2000/08/17 19:45:21 cpqbld Exp $ */
+/* #define FONTDEBUG */
/*
* Copyright 1992, 1993 by TOSHIBA Corp.
*
@@ -31,6 +32,8 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/omGeneric.c,v 3.25 2002/11/26 13:41:40 eich Exp $ */
+
/*
* Fixed the algorithms in parse_fontname() and parse_fontdata()
* to improve the logic for determining which font should be
@@ -41,6 +44,10 @@
*
* Modifiers: Jeff Walls, Paul Anderson: HEWLETT-PACKARD
*/
+/*
+ * Cleaned up mess, removed some blabla
+ * Egbert Eich, SuSE Linux AG
+ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -54,20 +61,31 @@
#define PIXEL_SIZE_FIELD 7
#define POINT_SIZE_FIELD 8
#define CHARSET_ENCODING_FIELD 14
-
-extern int _XmbDefaultTextEscapement(), _XwcDefaultTextEscapement();
-extern int _XmbDefaultTextExtents(), _XwcDefaultTextExtents();
-extern Status _XmbDefaultTextPerCharExtents(), _XwcDefaultTextPerCharExtents();
-extern int _XmbDefaultDrawString(), _XwcDefaultDrawString();
-extern void _XmbDefaultDrawImageString(), _XwcDefaultDrawImageString();
-
-extern int _XmbGenericTextEscapement(), _XwcGenericTextEscapement();
-extern int _XmbGenericTextExtents(), _XwcGenericTextExtents();
-extern Status _XmbGenericTextPerCharExtents(), _XwcGenericTextPerCharExtents();
-extern int _XmbGenericDrawString(), _XwcGenericDrawString();
-extern void _XmbGenericDrawImageString(), _XwcGenericDrawImageString();
-
-extern void _XlcDbg_printValue();
+#define XLFD_MAX_LEN 255
+
+extern int _XmbDefaultTextEscapement(), _XwcDefaultTextEscapement(),
+ _Xutf8DefaultTextEscapement();
+extern int _XmbDefaultTextExtents(), _XwcDefaultTextExtents(),
+ _Xutf8DefaultTextExtents();
+extern Status _XmbDefaultTextPerCharExtents(), _XwcDefaultTextPerCharExtents(),
+ _Xutf8DefaultTextPerCharExtents();
+extern int _XmbDefaultDrawString(), _XwcDefaultDrawString(),
+ _Xutf8DefaultDrawString();
+extern void _XmbDefaultDrawImageString(), _XwcDefaultDrawImageString(),
+ _Xutf8DefaultDrawImageString();
+
+extern int _XmbGenericTextEscapement(), _XwcGenericTextEscapement(),
+ _Xutf8GenericTextEscapement();
+extern int _XmbGenericTextExtents(), _XwcGenericTextExtents(),
+ _Xutf8GenericTextExtents();
+extern Status _XmbGenericTextPerCharExtents(), _XwcGenericTextPerCharExtents(),
+ _Xutf8GenericTextPerCharExtents();
+extern int _XmbGenericDrawString(), _XwcGenericDrawString(),
+ _Xutf8GenericDrawString();
+extern void _XmbGenericDrawImageString(), _XwcGenericDrawImageString(),
+ _Xutf8GenericDrawImageString();
+
+extern void _XlcDbg_printValue (const char *str, char **value, int num);
/* For VW/UDC start */
@@ -263,7 +281,7 @@ load_font(oc)
if (load_fontset_data (oc, font_set) != True)
return False;
-
+#ifndef TESTVERSION
if(load_fontdata(oc, font_set->font_data,
font_set->font_data_count) != True)
return False;
@@ -271,35 +289,6 @@ load_font(oc)
if(load_fontdata(oc, font_set->substitute,
font_set->substitute_num) != True)
return False;
-
-#if 0
- /* ### This code is no longer needed. This block essentially
- * ### took the font used for this FontSet and figured out
- * ### which font structure to use. This is now accomplished
- * ### via load_fontset_data(), which takes the *best* font
- * ### for this FontSet and performs an XLoadQueryFont() to
- * ### obtain the font structure. Note that this should work
- * ### for either Primary or Substitute fonts.
- * ### -- jjw/pma (HP)
- */
- if(font_set->font_data_count > 0 && font_set->font_data->font ) {
- for (i=0; i<font_set->font_data_count; i++)
- {
- if (!strcmp (font_set->font_data[i].xlfd_name,
- font_set->font_name))
- {
- font_set->font = font_set->font_data[i].font;
- break;
- }
- }
- } else if(font_set->substitute_num > 0 ) {
- for(i=0;i<font_set->substitute_num;i++){
- if(font_set->substitute[i].font != NULL){
- font_set->font = font_set->substitute[i].font;
- break ;
- }
- }
- }
#endif
/* Add 1996.05.20 */
@@ -464,6 +453,7 @@ init_core_part(oc)
continue;
length += strlen(font_set->font_name) + 1;
+
count++;
}
if (count == 0)
@@ -488,7 +478,7 @@ init_core_part(oc)
font_set = gen->font_set;
font_set_num = gen->font_set_num;
- for (count = 0; font_set_num-- > 0; font_set++, count++) {
+ for (count = 0; font_set_num-- > 0; font_set++) {
if (font_set->font_name == NULL)
continue;
@@ -501,6 +491,8 @@ init_core_part(oc)
Xfree(font_set->font_name);
*font_name_list++ = font_set->font_name = font_name_buf;
font_name_buf += strlen(font_name_buf) + 1;
+
+ count++;
}
set_fontset_extents(oc);
@@ -538,8 +530,8 @@ get_font_name(oc, pattern)
/* For VW/UDC start*/
-static char
-*get_rotate_fontname(font_name)
+static char *
+get_rotate_fontname(font_name)
char *font_name;
{
char *pattern = NULL, *ptr = NULL;
@@ -549,7 +541,8 @@ static char
int pixel_size = 0;
int field_num = 0, len = 0;
- if(font_name == (char *) NULL || (len = strlen(font_name)) <= 0 || len > 255)
+ if(font_name == (char *) NULL || (len = strlen(font_name)) <= 0
+ || len > XLFD_MAX_LEN)
return NULL;
pattern = (char *)Xmalloc(len + 1);
@@ -568,7 +561,7 @@ static char
for(field_num = 0 ; field_num < CHARSET_ENCODING_FIELD && ptr && *ptr ;
ptr++, field_num++) {
fields[field_num] = ptr;
-
+
if((ptr = strchr(ptr, '-'))) {
*ptr = '\0';
}
@@ -598,18 +591,21 @@ static char
fields[POINT_SIZE_FIELD - 1] = str_point;
len = 0;
- for(field_num = 0 ; field_num < CHARSET_ENCODING_FIELD &&
- fields[field_num] ; field_num++)
- len += 1 + strlen (fields[field_num]);
+ for (field_num = 0; field_num < CHARSET_ENCODING_FIELD &&
+ fields[field_num]; field_num++) {
+ len += 1 + strlen(fields[field_num]);
+ }
- if (len > 255)
+ /* Max XLFD length is 255 */
+ if (len > XLFD_MAX_LEN)
return NULL;
rotate_font_ptr = (char *)Xmalloc(len + 1);
if(!rotate_font_ptr)
return NULL;
- *rotate_font_ptr = '\0';
+ rotate_font_ptr[0] = '\0';
+
for(field_num = 0 ; field_num < CHARSET_ENCODING_FIELD &&
fields[field_num] ; field_num++) {
sprintf(rotate_font_ptr, "%s-%s", rotate_font_ptr, fields[field_num]);
@@ -642,6 +638,7 @@ is_match_charset(font_data, font_name)
return False;
}
+#if 0
static char *
get_font_name_from_list(oc, pattern, font_data)
XOC oc;
@@ -669,6 +666,7 @@ get_font_name_from_list(oc, pattern, font_data)
return name;
}
+#endif
static int
parse_all_name(oc, font_data, pattern)
@@ -693,11 +691,16 @@ parse_all_name(oc, font_data, pattern)
int list_num;
XFontStruct *fs_list;
if(is_match_charset(font_data, pattern) != True) {
+ /*
+ * pattern should not contain any wildcard (execpt '?')
+ * this was probably added to make this case insensitive.
+ */
if ((fn_list = XListFontsWithInfo(dpy, pattern,
MAXFONTS,
&list_num, &fs_list)) == NULL) {
return False;
- }
+ }
+ /* shouldn't we loop here ? */
else if ((prop_fname = get_prop_name(dpy, fs_list)) == NULL) {
XFreeFontInfo(fn_list, fs_list, list_num);
return False;
@@ -731,11 +734,11 @@ parse_omit_name(oc, font_data, pattern)
{
char* last = (char *) NULL;
char* base_name;
- char buf[BUFSIZE]; /* no XLFD name should be this long */
+ char buf[XLFD_MAX_LEN + 1];
int length = 0;
int num_fields;
-
- /* If the font specified by "pattern" is expandable to be
+ /*
+ * If the font specified by "pattern" is expandable to be
* a member of "font_data"'s FontSet, we've found a match.
*/
if(is_match_charset(font_data, pattern) == True) {
@@ -744,39 +747,11 @@ parse_omit_name(oc, font_data, pattern)
}
}
- /* If an XLFD name is arbitrarily (too) long, allocate a buffer,
- * and some extra space to tack stuff on the end.
- *
- * ### This is a hack. What happens is, we substitute pattern's
- * ### encoding with the default encoding for the FontSet and
- * ### try to find a match. For example, we may change pattern
- * ### from:
- * ### -*-*-*-*-*-*-14-*-*-*-*-*-jisx0212.1990-0 to
- * ### -*-*-*-*-*-*-14-*-*-*-*-*-JISX0208.1990-0
- * ### So, the length of the original pattern may not be enough
- * ### to store the "new" encoding (e.g., going from ISO8859-1 to
- * ### JISX0208.1990-0), so the author decided to simply allocate
- * ### a *bunch* of extra space to handle the potentially longer
- * ### encoding.
- * ###
- * ### The real way to do this would be to figure out the length
- * ### of the original encoding and the length of the new encoding.
- * ### Re-alloc the array with the difference. Since it doesn't
- * ### hurt anything keeping the extra-large buffer, I'll leave
- * ### it the way it is. --jjw/pma (HP)
- * ###
- */
-
- /*
- * since BUFSIZE is much bigger than any legal XLFD name
- * we'll allow the first half for the XLFD pattern, and the
- * second half for the charset-plus-encoding. If we wanted to
- * be accomodating, we could allocate memory, but that's
- * overkill for this. Hackers who are trying to do bad things
- * don't deserve to be accomodated like that.
- */
- if ((length = strlen (pattern)) > BUFSIZE/2) return -1;
+ length = strlen (pattern);
+ if (length > XLFD_MAX_LEN)
+ return -1;
+
strcpy(buf, pattern);
last = buf + length - 1;
@@ -796,6 +771,13 @@ parse_omit_name(oc, font_data, pattern)
* then append the encoding to get:
* -*-*-*-*-*-*-14-*-*-*-*-*-JISX0208.1990-0
*/
+ /*
+ * Take care of:
+ * -*-*-*-*-*-*-14-*-*-*-*-
+ */
+ if (*(last) == '-')
+ *++last = '*';
+
*++last = '-';
break;
case 13:
@@ -825,18 +807,10 @@ parse_omit_name(oc, font_data, pattern)
num_fields = 12;
break;
default:
- /* punt */
- if (length > 1 && *last == '*' && *(last - 1) == '-') {
- if (length > 3 && *(last - 2) == '*' && *(last - 3) == '-')
- last -= 3;
- else
- last--;
- } else {
+ if (*last != '-')
*++last = '-';
- }
break;
}
- last++;
/* At this point, "last" is pointing to the last "-" in the
* xlfd, and all xlfd's at this point take a form similar to:
@@ -848,44 +822,29 @@ parse_omit_name(oc, font_data, pattern)
* If the modified font is found in the current FontSet,
* we've found a match.
*/
+
+ last++;
- /* don't let hackers trounce the stack... */
- if (strlen (font_data->name) > BUFSIZE/2)
+ if ((last - buf) + strlen(font_data->name) > XLFD_MAX_LEN)
return -1;
- /* ...otherwise there's plenty of room to tack on the charset/encoding */
strcpy(last, font_data->name);
if ((font_data->xlfd_name = get_font_name(oc, buf)) != NULL)
return True;
- /* This happens if the client specifies less than 12 fields
- * (e.g., -*-*-*) for some reason. We'll keep appending
- * "-*" until we find something that matches. This "feels"
- * as if we're being overly nice to "lazy" client programs,
- * but that's the way X is...nice :-)
- */
+ /* This may mot be needed anymore as XListFonts() takes care of this */
while (num_fields < 12) {
+ if ((last - buf) > (XLFD_MAX_LEN - 2))
+ return -1;
*last = '*';
*(last + 1) = '-';
strcpy(last + 2, font_data->name);
num_fields++;
last+=2;
if ((font_data->xlfd_name = get_font_name(oc, buf)) != NULL)
- return True;
+ return True;
}
-
-/*
- I'm not sure what Teeks was trying to do here. It
- seems to me that if "get_font_name()" fails,
- "get_font_name_from_list()" would also fail. I wouldn't
- put this in the SI until I understood it better.
- -- jjw/pma (HP)
-
- Couldn't resolve the wild base fontname !
- - Teeks
-*/
- if ((font_data->xlfd_name = get_font_name_from_list(oc, buf, font_data)) != NULL)
- return True;
+
return False;
}
@@ -894,8 +853,8 @@ parse_omit_name(oc, font_data, pattern)
typedef enum{C_PRIMARY, C_SUBSTITUTE, C_VMAP, C_VROTATE } ClassType;
static int
-parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_count,
- class, font_data_return)
+parse_fontdata(oc, font_set, font_data, font_data_count, name_list,
+ name_list_count, class, font_data_return)
XOC oc;
FontSet font_set;
FontData font_data;
@@ -911,7 +870,6 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
char *pattern = (char *) NULL;
int found_num = 0, ret = 0;
int count = name_list_count;
- Bool is_found = False;
if(name_list == NULL || count <= 0) {
return False;
@@ -920,44 +878,53 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
if(font_data == NULL || font_data_count <= 0) {
return False;
}
-
- /* Loop through each FontSet defined in the "font_data" CharSet. */
+
+ /* Loop through each font encoding defined in the "font_data" FontSet. */
for ( ; font_data_count-- > 0; font_data++) {
- is_found = False;
+ Bool is_found = False;
font_name = (char *) NULL;
count = name_list_count;
cur_name_list = name_list;
- /* Loop through each font specified by the user in the call to XCreateFontset(). */
+ /*
+ * Loop through each font specified by the user
+ * in the call to XCreateFontset().
+ */
while (count-- > 0) {
pattern = *cur_name_list++;
if (pattern == NULL || *pattern == '\0')
continue;
-
-
- /* If the current font is fully specified (i.e., the xlfd contains
- * no wildcards) and the font exists on the X Server, we have a match.
+#ifdef FONTDEBUG
+ fprintf(stderr,"Font pattern: %s %s\n",
+ pattern,font_data->name);
+#endif
+
+ /*
+ * If the current font is fully specified (i.e., the
+ * xlfd contains no wildcards) and the font exists on
+ * the X Server, we have a match.
*/
if (strchr(pattern, '*') == NULL &&
(font_name = get_font_name(oc, pattern))) {
-
- /* Find the full xlfd name for this font. If the font is already
- * in xlfd format, it is simply returned. If the font is an
- * alias for another font, the xlfd of the aliased font is returned.
+ /*
+ * Find the full xlfd name for this font. If the font is
+ * already in xlfd format, it is simply returned. If the
+ * font is an alias for another font, the xlfd of the
+ * aliased font is returned.
*/
ret = parse_all_name(oc, font_data, font_name);
Xfree(font_name);
if (ret == -1) return -1;
if (ret == False) continue;
-
- /* Since there was an exact match of a fully-specified font
+ /*
+ * Since there was an exact match of a fully-specified font
* or a font alias, we can return now since the desired font
- * was found for the current FontSet for this CharSet.
+ * was found for the current font encoding for this FontSet.
*
* Previous implementations of this algorithm would
* not return here. Instead, they continued searching
- * through the FontSets for this CharSet. The side-effect
+ * through the font encodings for this FontSet. The side-effect
* of that behavior is you may return a "substitute" match
* instead of an "exact" match. We believe there should be a
* preference on exact matches. Therefore, as soon as we
@@ -965,7 +932,7 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
*
* Also, previous implementations seemed to think it was
* important to find either a primary or substitute font
- * for each FontSet in the CharSet before returning an
+ * for each Font encoding in the FontSet before returning an
* acceptable font. We don't believe this is necessary.
* All the client cares about is finding a reasonable font
* for what was passed in. If we find an exact match,
@@ -973,19 +940,25 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
*
* -- jjw/pma (HP)
*/
- font_data_return->xlfd_name = (char *)Xmalloc
+ if (font_data_return) {
+ font_data_return->xlfd_name = (char *)Xmalloc
(strlen(font_data->xlfd_name) + 1);
- if (!font_data_return->xlfd_name) return -1;
+ if (!font_data_return->xlfd_name) return -1;
- strcpy (font_data_return->xlfd_name, font_data->xlfd_name);
+ strcpy (font_data_return->xlfd_name, font_data->xlfd_name);
- font_data_return->side = font_data->side;
+ font_data_return->side = font_data->side;
+ }
+#ifdef FONTDEBUG
+ fprintf(stderr,"XLFD name: %s\n",font_data->xlfd_name);
+#endif
return True;
}
-
- /* If the font name is not fully specified (i.e., it has wildcards),
- * we have more work to do. See the comments in parse_omit_name()
+ /*
+ * If the font name is not fully specified
+ * (i.e., it has wildcards), we have more work to do.
+ * See the comments in parse_omit_name()
* for the list of things to do.
*/
ret = parse_omit_name(oc, font_data, pattern);
@@ -993,7 +966,8 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
if (ret == -1) return -1;
if (ret == False) continue;
- /* A font which matched the wild-carded specification was found.
+ /*
+ * A font which matched the wild-carded specification was found.
* Only update the return data if a font has not yet been found.
* This maintains the convention that FontSets listed higher in
* a CodeSet in the Locale Database have higher priority than
@@ -1012,9 +986,11 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
* higher priority than a font found in the JISX0208.1983-0
* FontSet.
*/
- if (font_data_return->xlfd_name == NULL)
- {
-
+ if (font_data_return && font_data_return->xlfd_name == NULL) {
+
+#ifdef FONTDEBUG
+ fprintf(stderr,"XLFD name: %s\n",font_data->xlfd_name);
+#endif
font_data_return->xlfd_name = (char *)Xmalloc
(strlen(font_data->xlfd_name) + 1);
if (!font_data_return->xlfd_name) return -1;
@@ -1025,16 +1001,22 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
found_num++;
is_found = True;
+
+ break;
}
switch(class) {
case C_PRIMARY:
- if(is_found == False)
- {
- /* Did not find a font for the current FontSet. Check the
+ if(is_found == False) {
+ /*
+ * Did not find a font for the current FontSet. Check the
* FontSet's "substitute" font for a match. If we find a
* match, we'll keep searching in hopes of finding an exact
* match later down the FontSet list.
+ *
+ * when we return and we have found a font font_data_return
+ * contains the first (ie. best) match no matter if this
+ * is a C_PRIMARY or a C_SUBSTITUTE font
*/
ret = parse_fontdata(oc, font_set, font_set->substitute,
font_set->substitute_num, name_list,
@@ -1046,7 +1028,10 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
found_num++;
is_found = True;
}
-
+#ifdef TESTVERSION
+ else
+ return True;
+#endif
break;
case C_SUBSTITUTE:
@@ -1059,8 +1044,8 @@ parse_fontdata(oc, font_set, font_data, font_data_count, name_list, name_list_co
if(is_found == True) {
char *rotate_name;
- if((rotate_name = get_rotate_fontname(font_data->xlfd_name)) !=
- NULL) {
+ if((rotate_name = get_rotate_fontname(font_data->xlfd_name))
+ != NULL) {
Xfree(font_data->xlfd_name);
font_data->xlfd_name = rotate_name;
@@ -1088,20 +1073,20 @@ parse_vw(oc, font_set, name_list, count)
int count;
{
FontData vmap = font_set->vmap;
- FontDataRec font_data_return;
VRotate vrotate = font_set->vrotate;
int vmap_num = font_set->vmap_num;
int vrotate_num = font_set->vrotate_num;
int ret = 0, i = 0;
if(vmap_num > 0) {
- if(parse_fontdata(oc, font_set, vmap, vmap_num, name_list, count, C_VMAP) == -1)
+ if(parse_fontdata(oc, font_set, vmap, vmap_num, name_list,
+ count, C_VMAP,NULL) == -1)
return (-1);
}
if(vrotate_num > 0) {
ret = parse_fontdata(oc, font_set, (FontData) vrotate, vrotate_num,
- name_list, count, C_VROTATE, &font_data_return);
+ name_list, count, C_VROTATE, NULL);
if(ret == -1) {
return (-1);
} else if(ret == False) {
@@ -1109,8 +1094,8 @@ parse_vw(oc, font_set, name_list, count)
int num_cr;
int sub_num = font_set->substitute_num;
- code_range = vrotate[i].code_range;
- num_cr = vrotate[i].num_cr;
+ code_range = vrotate[0].code_range; /* ? */
+ num_cr = vrotate[0].num_cr; /* ? */
for(i = 0 ; i < vrotate_num ; i++) {
if(vrotate[i].xlfd_name)
Xfree(vrotate[i].xlfd_name);
@@ -1122,7 +1107,8 @@ parse_vw(oc, font_set, name_list, count)
(sizeof(VRotateRec) * sub_num);
if(font_set->vrotate == (VRotate)NULL)
return (-1);
-
+ memset(font_set->vrotate, 0x00, sizeof(VRotateRec) * sub_num);
+
for(i = 0 ; i < sub_num ; i++) {
vrotate[i].charset_name = font_set->substitute[i].name;
vrotate[i].side = font_set->substitute[i].side;
@@ -1131,11 +1117,11 @@ parse_vw(oc, font_set, name_list, count)
}
vrotate_num = font_set->vrotate_num = sub_num;
} else {
- font_set->vrotate = (VRotate)NULL;
+ vrotate = font_set->vrotate = (VRotate)NULL;
}
ret = parse_fontdata(oc, font_set, (FontData) vrotate, vrotate_num,
- name_list, count, C_VROTATE, &font_data_return);
+ name_list, count, C_VROTATE, NULL);
if(ret == -1)
return (-1);
}
@@ -1174,22 +1160,18 @@ parse_fontname(oc)
if(font_set->font_data_count > 0) {
- /* If there are a non-zero number of FontSets defined
+ /*
+ * If there are a non-zero number of FontSets defined
* for this CharSet.
- */
- font_data_return.name = NULL;
- font_data_return.side = XlcUnknown;
- font_data_return.scopes_num = 0;
- font_data_return.scopes = NULL;
- font_data_return.xlfd_name = NULL;
- font_data_return.font = NULL;
-
- /* Try to find a font for this CharSet. If we find an
+ * Try to find a font for this CharSet. If we find an
* acceptable font, we save the information for return
* to the client. If we do not find an acceptable font,
* a "missing_charset" will be reported to the client
* for this CharSet.
*/
+ font_data_return. xlfd_name = NULL;
+ font_data_return.side = XlcUnknown;
+
ret = parse_fontdata(oc, font_set, font_set->font_data,
font_set->font_data_count,
name_list, count, C_PRIMARY,
@@ -1197,6 +1179,13 @@ parse_fontname(oc)
if(ret == -1) {
goto err;
} else if(ret == True) {
+ /*
+ * We can't just loop thru fontset->font_data to
+ * find the first (ie. best) match: parse_fontdata
+ * will try a substitute font if no primary one could
+ * be matched. It returns the required information in
+ * font_data_return.
+ */
font_set->font_name = (char *)Xmalloc
(strlen(font_data_return.xlfd_name) + 1);
if(font_set->font_name == (char *) NULL)
@@ -1205,6 +1194,7 @@ parse_fontname(oc)
font_set->side = font_data_return.side;
Xfree (font_data_return.xlfd_name);
+ font_data_return.xlfd_name = NULL;
if(parse_vw(oc, font_set, name_list, count) == -1)
goto err;
@@ -1212,20 +1202,13 @@ parse_fontname(oc)
}
} else if(font_set->substitute_num > 0) {
-
- /* If there are no FontSets defined for this
+ /*
+ * If there are no FontSets defined for this
* CharSet. We can only find "substitute" fonts.
*/
- font_data_return.name = NULL;
- font_data_return.side = XlcUnknown;
- font_data_return.scopes_num = 0;
- font_data_return.scopes = NULL;
- font_data_return.xlfd_name = NULL;
- font_data_return.font = NULL;
-
ret = parse_fontdata(oc, font_set, font_set->substitute,
font_set->substitute_num,
- name_list, count, C_SUBSTITUTE, &font_data_return);
+ name_list, count, C_SUBSTITUTE, NULL);
if(ret == -1) {
goto err;
} else if(ret == True) {
@@ -1255,12 +1238,14 @@ parse_fontname(oc)
strcpy(base_name, oc->core.base_name_list);
oc->core.base_name_list = base_name;
- XFreeStringList(name_list);
+ XFreeStringList(name_list);
return found_num;
err:
- XFreeStringList(name_list);
+ XFreeStringList(name_list);
+ /* Prevent this from being freed twice */
+ oc->core.base_name_list = NULL;
return -1;
}
@@ -1416,9 +1401,13 @@ free_fontdataOC(dpy,font_data, font_data_count)
XFreeFontInfo(NULL, font_data->font, 1);/* Add 1996.01.23 */
font_data->font = NULL;
}
-/* XOM to kyoutuu shite shiyou sushiteiru ryouiki
- kokoha free_fontdataOM() de free sareru
-
+/*
+ * font_data->name and font_data->scopes belong to the OM not OC.
+ * To save space this data is shared between OM and OC. We are
+ * not allowed to free it here.
+ * It has been moved to free_fontdataOM()
+ */
+/*
if(font_data->scopes){
Xfree(font_data->scopes);
font_data->scopes = NULL;
@@ -1430,6 +1419,7 @@ free_fontdataOC(dpy,font_data, font_data_count)
*/
}
}
+
void destroy_fontdata(gen,dpy)
XOCGenericPart *gen ;
Display *dpy ;
@@ -1441,7 +1431,16 @@ void destroy_fontdata(gen,dpy)
font_set = gen->font_set;
font_set_num = gen->font_set_num;
for( ; font_set_num-- ; font_set++) {
+ if (font_set->font) {
+ if(font_set->font->fid)
+ XFreeFont(dpy,font_set->font);
+ else
+ XFreeFontInfo(NULL, font_set->font, 1);
+ font_set->font = NULL;
+ }
if(font_set->font_data) {
+ if (font_set->info)
+ XFreeFontInfo(NULL, font_set->info, 1);
free_fontdataOC(dpy,
font_set->font_data, font_set->font_data_count);
Xfree(font_set->font_data);
@@ -1487,6 +1486,9 @@ destroy_oc(oc)
if (gen->wcs_to_cs)
_XlcCloseConverter(gen->wcs_to_cs);
+ if (gen->utf8_to_cs)
+ _XlcCloseConverter(gen->utf8_to_cs);
+
/* For VW/UDC start */ /* Change 1996.01.8 */
destroy_fontdata(gen,dpy);
/*
@@ -1578,7 +1580,12 @@ static XOCMethodsRec oc_default_methods = {
_XwcDefaultTextExtents,
_XwcDefaultTextPerCharExtents,
_XwcDefaultDrawString,
- _XwcDefaultDrawImageString
+ _XwcDefaultDrawImageString,
+ _Xutf8DefaultTextEscapement,
+ _Xutf8DefaultTextExtents,
+ _Xutf8DefaultTextPerCharExtents,
+ _Xutf8DefaultDrawString,
+ _Xutf8DefaultDrawImageString
};
static XOCMethodsRec oc_generic_methods = {
@@ -1594,7 +1601,12 @@ static XOCMethodsRec oc_generic_methods = {
_XwcGenericTextExtents,
_XwcGenericTextPerCharExtents,
_XwcGenericDrawString,
- _XwcGenericDrawImageString
+ _XwcGenericDrawImageString,
+ _Xutf8GenericTextEscapement,
+ _Xutf8GenericTextExtents,
+ _Xutf8GenericTextPerCharExtents,
+ _Xutf8GenericDrawString,
+ _Xutf8GenericDrawImageString
};
typedef struct _XOCMethodsListRec {
@@ -1891,9 +1903,9 @@ add_data(om)
extern FontScope _XlcParse_scopemaps();
FontData
-read_EncodingInfo(count,value)
-int count;
-char **value;
+read_EncodingInfo(count, value)
+ int count;
+ char **value;
{
FontData font_data,ret;
char *buf, *bufptr,*scp;
@@ -1912,7 +1924,8 @@ char **value;
if ((bufptr = strchr(buf, ':'))) {
len = (int)(bufptr - buf);
bufptr++ ;
- }
+ } else
+ len = strlen(buf);
font_data->name = (char *) Xmalloc(len + 1);
if (font_data->name == NULL)
return NULL;
@@ -1932,11 +1945,11 @@ char **value;
return(ret);
}
-static CodeRange read_vrotate(count,value,type,vrotate_num)
-int count;
-char **value;
-int *type;
-int *vrotate_num;
+static CodeRange read_vrotate(count, value, type, vrotate_num)
+ int count;
+ char **value;
+ int *type;
+ int *vrotate_num;
{
CodeRange range;
if(!strcmp(value[0],"all")){
@@ -1954,10 +1967,10 @@ int *vrotate_num;
}
}
-static void read_vw(lcd,font_set,num)
-XLCd lcd;
-OMData font_set;
-int num;
+static void read_vw(lcd, font_set,num)
+ XLCd lcd;
+ OMData font_set;
+ int num;
{
char **value, buf[BUFSIZ];
int count;
@@ -2039,7 +2052,8 @@ init_om(om)
if (udc == NULL)
return False;
for(i=0;i<count;i++){
- sscanf(value[i],"\\x%x,\\x%x", &(udc[i].start), &(udc[i].end));
+ sscanf(value[i],"\\x%lx,\\x%lx", &(udc[i].start),
+ &(udc[i].end));
}
for(i=0;i<data->charset_count;i++){
if(data->charset_list[i]->udc_area == NULL){
diff --git a/modules/om/generic/omImText.c b/modules/om/generic/omImText.c
index 2e3ab708..c25969f2 100644
--- a/modules/om/generic/omImText.c
+++ b/modules/om/generic/omImText.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omImText.c,v 1.4 2001/01/17 19:41:56 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -72,7 +73,7 @@ _XmbGenericDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -91,10 +92,29 @@ _XwcGenericDrawImageString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
_XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMWideChar,
(XPointer) text, length);
}
+
+void
+#if NeedFunctionPrototypes
+_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+#else
+_Xutf8GenericDrawImageString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/modules/om/generic/omText.c b/modules/om/generic/omText.c
index c95d8407..52d49370 100644
--- a/modules/om/generic/omText.c
+++ b/modules/om/generic/omText.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omText.c,v 1.6 2002/09/16 18:05:23 eich Exp $ */
/*
* Copyright 1995 by FUJITSU LIMITED
* This is source code modified by FUJITSU LIMITED under the Joint
@@ -175,7 +176,7 @@ DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y, text, length)
unsigned char *ptr;
int ptr_len, char_len = 0;
FontData fd;
- int ret;
+ int ret = 0;
ptr = (unsigned char *)text;
is_xchar2b = fs->is_xchar2b;
@@ -195,10 +196,10 @@ DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y, text, length)
* *always* contain good data. We should probably remove
* the check for "fd->font", but we won't :-) -- jjw/pma (HP)
*/
- if(fd == (FontData) NULL ||
- (font = fs->font) == (XFontStruct *) NULL){
+ if((font = fs->font) == (XFontStruct *) NULL){
- if((font = fd->font) == (XFontStruct *) NULL)
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
break;
}
@@ -237,6 +238,10 @@ DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y, text, length)
(font = fd->font) == (XFontStruct *) NULL)
break;
}
+
+ case XOMOrientation_Context:
+ /* never used? */
+ break;
}
if(is_xchar2b)
@@ -264,6 +269,10 @@ DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y, text, length)
case XOMOrientation_TTB_RTL:
case XOMOrientation_TTB_LTR:
ret = y;
+ break;
+ case XOMOrientation_Context:
+ /* not used? */
+ break;
}
return ret;
}
@@ -324,6 +333,9 @@ _XomGenericDrawString(dpy, d, oc, gc, x, y, type, text, length)
case XOMOrientation_TTB_LTR:
y = next;
break;
+ case XOMOrientation_Context:
+ /* not used */
+ break;
}
/* For VW/UDC */
}
@@ -345,7 +357,7 @@ _XmbGenericDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -364,10 +376,29 @@ _XwcGenericDrawString(dpy, d, oc, gc, x, y, text, length)
XOC oc;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMWideChar,
(XPointer) text, length);
}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+#else
+_Xutf8GenericDrawString(dpy, d, oc, gc, x, y, text, length)
+ Display *dpy;
+ Drawable d;
+ XOC oc;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/modules/om/generic/omTextEsc.c b/modules/om/generic/omTextEsc.c
index 7bc73259..ad262ef2 100644
--- a/modules/om/generic/omTextEsc.c
+++ b/modules/om/generic/omTextEsc.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omTextEsc.c,v 1.5 2001/01/17 19:41:56 dawes Exp $ */
/*
* Copyright 1995 by FUJITSU LIMITED
* This is source code modified by FUJITSU LIMITED under the Joint
@@ -150,10 +151,29 @@ TextWidthWithFontSet(font_set, oc, text, length)
is_xchar2b, FONTSCOPE);
if(ptr_len <= 0)
break;
+
+ /*
+ * First, see if the "Best Match" font for the FontSet was set.
+ * If it was, use that font. If it was not set, then use the
+ * font defined by font_set->font_data[0] (which is what
+ * _XomGetFontDataFromFontSet() always seems to return for
+ * non-VW text). Note that given the new algorithm in
+ * parse_fontname() and parse_fontdata(), fs->font will
+ * *always* contain good data. We should probably remove
+ * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
+ *
+ * Above comment and way this is done propagated from omText.c
+ * Note that fd->font is junk so using the result of the
+ * above call /needs/ to be ignored.
+ *
+ * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
+ *
+ */
+
if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL) {
+ (font = font_set->font) == (XFontStruct *) NULL) {
- if((font = font_set->font) == (XFontStruct *) NULL)
+ if((font = fd->font) == (XFontStruct *) NULL)
break;
}
@@ -198,6 +218,11 @@ TextWidthWithFontSet(font_set, oc, text, length)
char_len = ptr_len;
escapement += escapement_vertical(oc, font, is_xchar2b,
(XPointer) ptr, char_len);
+ break;
+
+ case XOMOrientation_Context:
+ /* not used? */
+ break;
}
if(char_len <= 0)
@@ -262,7 +287,7 @@ _XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length)
#else
_XmbGenericTextEscapement(oc, text, length)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
#endif
{
@@ -275,9 +300,23 @@ _XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
#else
_XwcGenericTextEscapement(oc, text, length)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
#endif
{
return _XomGenericTextEscapement(oc, XOMWideChar, (XPointer) text, length);
}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length)
+#else
+_Xutf8GenericTextEscapement(oc, text, length)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+#endif
+{
+ return _XomGenericTextEscapement(oc, XOMUtf8String, (XPointer) text,
+ length);
+}
diff --git a/modules/om/generic/omTextExt.c b/modules/om/generic/omTextExt.c
index 24563167..f4053dfa 100644
--- a/modules/om/generic/omTextExt.c
+++ b/modules/om/generic/omTextExt.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omTextExt.c,v 1.4 2001/01/17 19:41:57 dawes Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -116,7 +117,7 @@ _XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
#else
_XmbGenericTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -133,7 +134,7 @@ _XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
#else
_XwcGenericTextExtents(oc, text, length, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *overall_ink;
XRectangle *overall_logical;
@@ -142,3 +143,20 @@ _XwcGenericTextExtents(oc, text, length, overall_ink, overall_logical)
return _XomGenericTextExtents(oc, XOMWideChar, (XPointer) text, length,
overall_ink, overall_logical);
}
+
+int
+#if NeedFunctionPrototypes
+_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+#else
+_Xutf8GenericTextExtents(oc, text, length, overall_ink, overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ return _XomGenericTextExtents(oc, XOMUtf8String, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
diff --git a/modules/om/generic/omTextPer.c b/modules/om/generic/omTextPer.c
index 7f7217e7..0900be2b 100644
--- a/modules/om/generic/omTextPer.c
+++ b/modules/om/generic/omTextPer.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/omTextPer.c,v 1.5 2001/10/28 03:32:35 tsi Exp $ */
#include "Xlibint.h"
#include "XomGeneric.h"
@@ -47,7 +48,7 @@ _XomGenericTextPerCharExtents(oc, type, text, length, ink_buf, logical_buf,
Bool is_xchar2b;
XPointer args[2];
XChar2b xchar2b_buf[BUFSIZ], *xchar2b_ptr;
- char *xchar_ptr;
+ char *xchar_ptr = NULL;
XCharStruct *def, *cs, overall;
int buf_len, left, require_num;
int logical_ascent, logical_descent;
@@ -172,7 +173,7 @@ _XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
_XmbGenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
buf_size, num_chars, overall_ink, overall_logical)
XOC oc;
- char *text;
+ _Xconst char *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -199,7 +200,7 @@ _XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
_XwcGenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
buf_size, num_chars, overall_ink, overall_logical)
XOC oc;
- wchar_t *text;
+ _Xconst wchar_t *text;
int length;
XRectangle *ink_buf;
XRectangle *logical_buf;
@@ -214,3 +215,31 @@ _XwcGenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
num_chars, overall_ink,
overall_logical);
}
+
+Status
+#if NeedFunctionPrototypes
+_Xutf8GenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+#else
+_Xutf8GenericTextPerCharExtents(oc, text, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical)
+ XOC oc;
+ _Xconst char *text;
+ int length;
+ XRectangle *ink_buf;
+ XRectangle *logical_buf;
+ int buf_size;
+ int *num_chars;
+ XRectangle *overall_ink;
+ XRectangle *overall_logical;
+#endif
+{
+ return _XomGenericTextPerCharExtents(oc, XOMUtf8String, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
diff --git a/modules/om/generic/omXChar.c b/modules/om/generic/omXChar.c
index eb47e66d..ce7b3287 100644
--- a/modules/om/generic/omXChar.c
+++ b/modules/om/generic/omXChar.c
@@ -34,6 +34,7 @@
/*
* Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
*/
+/* $XFree86: xc/lib/X11/omXChar.c,v 1.5 2001/01/17 19:41:57 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPublic.h"
@@ -113,13 +114,13 @@ check_vertical_fonttype(name)
#define FONTSCOPE 2
FontData
-_XomGetFontDataFromFontSet(fs,str,len,len_ret,is2b,type)
-FontSet fs;
-unsigned char *str;
-int len;
-int *len_ret;
-int is2b;
-int type; /* VMAP , VROTATE , else */
+_XomGetFontDataFromFontSet(fs, str,len, len_ret, is2b, type)
+ FontSet fs;
+ unsigned char *str;
+ int len;
+ int *len_ret;
+ int is2b;
+ int type; /* VMAP , VROTATE , else */
{
unsigned long value;
int num,i,hit,csize;
@@ -435,18 +436,29 @@ _XomInitConverter(oc, type)
XOMTextType type;
{
XOCGenericPart *gen = XOC_GENERIC(oc);
- XlcConv conv;
+ XlcConv *convp;
char *conv_type;
+ XlcConv conv;
XLCd lcd;
- if (type == XOMWideChar) {
- conv = gen->wcs_to_cs;
+ switch (type) {
+ case XOMWideChar:
+ convp = &gen->wcs_to_cs;
conv_type = XlcNWideChar;
- } else {
- conv = gen->mbs_to_cs;
+ break;
+ case XOMMultiByte:
+ convp = &gen->mbs_to_cs;
conv_type = XlcNMultiByte;
+ break;
+ case XOMUtf8String:
+ convp = &gen->utf8_to_cs;
+ conv_type = XlcNUtf8String;
+ break;
+ default:
+ return (XlcConv) NULL;
}
+ conv = *convp;
if (conv) {
_XlcResetConverter(conv);
return conv;
@@ -454,14 +466,13 @@ _XomInitConverter(oc, type)
lcd = oc->core.om->core.lcd;
- conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
-
- if (type == XOMWideChar)
- gen->wcs_to_cs = conv;
- else
- gen->mbs_to_cs = conv;
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNFontCharSet);
+ if (conv == (XlcConv) NULL) {
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ }
+ *convp = conv;
return conv;
}
diff --git a/nls/C/XI18N_OBJS b/nls/C/XI18N_OBJS
index 32e4f358..cd1dc8f8 100644
--- a/nls/C/XI18N_OBJS
+++ b/nls/C/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for C locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/C/XLC_LOCALE.pre b/nls/C/XLC_LOCALE.pre
index 7198f5a1..b3da891b 100644
--- a/nls/C/XLC_LOCALE.pre
+++ b/nls/C/XLC_LOCALE.pre
@@ -1,5 +1,6 @@
XCOMM $Xorg: C,v 1.3 2000/08/17 19:46:59 cpqbld Exp $
XCOMM XLocale Database Sample for C.
+XCOMM $XFree86: xc/nls/XLC_LOCALE/C,v 1.4 2001/01/17 19:37:05 dawes Exp $
XCOMM
XCOMM
@@ -47,4 +48,16 @@ cs0 {
ct_encoding ISO8859-1:GL
}
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-1:GR
+}
+
END XLC_XLOCALE
diff --git a/nls/armscii-8/Compose.pre b/nls/armscii-8/Compose.pre
new file mode 100644
index 00000000..08e7fe3a
--- /dev/null
+++ b/nls/armscii-8/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ARMSCII-8 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/armscii-8,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/armscii-8/XI18N_OBJS b/nls/armscii-8/XI18N_OBJS
new file mode 100644
index 00000000..02d87c60
--- /dev/null
+++ b/nls/armscii-8/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for armscii-8 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/armscii-8/XLC_LOCALE.pre b/nls/armscii-8/XLC_LOCALE.pre
new file mode 100644
index 00000000..7fb19f74
--- /dev/null
+++ b/nls/armscii-8/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/armscii-8,v 1.2 2000/12/01 17:43:02 dawes Exp $
+XCOMM XLocale Database Sample for armscii-8.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ARMSCII-8:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ARMSCII-8:GR
+ font ARMSCII-8:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ARMSCII-8
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ARMSCII-8
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ARMSCII-8:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ARMSCII-8:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/compose.dir.pre b/nls/compose.dir.pre
index 25ed582d..a67ea471 100644
--- a/nls/compose.dir.pre
+++ b/nls/compose.dir.pre
@@ -1,93 +1,350 @@
-XCOMM $Xorg: compose.dir,v 1.4 2000/12/12 13:00:42 coskrey Exp $
+XCOMM $Xorg: compose.dir,v 1.3 2000/08/17 19:46:48 cpqbld Exp $
XCOMM
XCOMM This file contains compose table file name.
XCOMM The first word is the compose table file name and
XCOMM the second word is full locale name.
XCOMM
-iso8859-1/Compose: C
-iso8859-1/Compose: af_ZA.ISO8859-1
-iso8859-1/Compose: ca_ES.ISO8859-1
-iso8859-1/Compose: da_DK.ISO8859-1
-iso8859-1/Compose: de_AT.ISO8859-1
-iso8859-1/Compose: de_CH.ISO8859-1
-iso8859-1/Compose: de_DE.ISO8859-1
-iso8859-1/Compose: de_LI.ISO8859-1
-iso8859-1/Compose: de_LU.ISO8859-1
-iso8859-1/Compose: en_AU.ISO8859-1
-iso8859-1/Compose: en_BZ.ISO8859-1
-iso8859-1/Compose: en_CA.ISO8859-1
-iso8859-1/Compose: en_GB.ISO8859-1
-iso8859-1/Compose: en_IE.ISO8859-1
-iso8859-1/Compose: en_JM.ISO8859-1
-iso8859-1/Compose: en_NZ.ISO8859-1
-iso8859-1/Compose: en_TT.ISO8859-1
-iso8859-1/Compose: en_UK.ISO8859-1
-iso8859-1/Compose: en_US.ISO8859-1
-iso8859-1/Compose: en_ZA.ISO8859-1
-iso8859-1/Compose: es_AR.ISO8859-1
-iso8859-1/Compose: es_BO.ISO8859-1
-iso8859-1/Compose: es_CL.ISO8859-1
-iso8859-1/Compose: es_CO.ISO8859-1
-iso8859-1/Compose: es_CR.ISO8859-1
-iso8859-1/Compose: es_DO.ISO8859-1
-iso8859-1/Compose: es_EC.ISO8859-1
-iso8859-1/Compose: es_ES.ISO8859-1
-iso8859-1/Compose: es_GT.ISO8859-1
-iso8859-1/Compose: es_HN.ISO8859-1
-iso8859-1/Compose: es_MX.ISO8859-1
-iso8859-1/Compose: es_NI.ISO8859-1
-iso8859-1/Compose: es_PA.ISO8859-1
-iso8859-1/Compose: es_PE.ISO8859-1
-iso8859-1/Compose: es_PR.ISO8859-1
-iso8859-1/Compose: es_PY.ISO8859-1
-iso8859-1/Compose: es_SV.ISO8859-1
-iso8859-1/Compose: es_UY.ISO8859-1
-iso8859-1/Compose: es_VE.ISO8859-1
-iso8859-1/Compose: eu_ES.ISO8859-1
-iso8859-1/Compose: fi_FI.ISO8859-1
-iso8859-1/Compose: fo_FO.ISO8859-1
-iso8859-1/Compose: fr_BE.ISO8859-1
-iso8859-1/Compose: fr_CA.ISO8859-1
-iso8859-1/Compose: fr_CH.ISO8859-1
-iso8859-1/Compose: fr_FR.ISO8859-1
-iso8859-1/Compose: fr_LU.ISO8859-1
-iso8859-1/Compose: id_ID.ISO8859-1
-iso8859-1/Compose: is_IS.ISO8859-1
-iso8859-1/Compose: it_CH.ISO8859-1
-iso8859-1/Compose: it_IT.ISO8859-1
-iso8859-1/Compose: lt_LN.ISO8859-1
-iso8859-1/Compose: nl_BE.ISO8859-1
-iso8859-1/Compose: nl_NL.ISO8859-1
-iso8859-1/Compose: no_NO.ISO8859-1
-iso8859-1/Compose: pt_BR.ISO8859-1
-iso8859-1/Compose: pt_PT.ISO8859-1
-iso8859-1/Compose: sv_FI.ISO8859-1
-iso8859-1/Compose: sv_SE.ISO8859-1
-iso8859-2/Compose: cs_CZ.ISO8859-2
-iso8859-2/Compose: cz_CZ.ISO8859-2
-iso8859-2/Compose: hr_HR.ISO8859-2
-iso8859-2/Compose: hu_HU.ISO8859-2
-iso8859-2/Compose: pl_PL.ISO8859-2
-iso8859-2/Compose: ro_RO.ISO8859-2
-iso8859-2/Compose: sh_YU.ISO8859-2
-iso8859-2/Compose: sk_SK.ISO8859-2
-iso8859-2/Compose: sl_CS.ISO8859-2
-iso8859-2/Compose: sl_SI.ISO8859-2
-iso8859-2/Compose: sq_AL.ISO8859-2
-iso8859-2/Compose: sr_SP.ISO8859-2
-iso8859-2/Compose: sr_YU.ISO8859-2
-en_US.utf/Compose: en_US.utf
-
-XCOMM Added by Sun
-en_US.UTF-8/Compose: en_US.UTF-8
-
-iso8859-5/Compose: sr_SP.ISO8859-5
-iso8859-5/Compose: bg_BG.ISO8859-5
-iso8859-5/Compose: mk_MK.ISO8859-5
-iso8859-5/Compose: ru.ISO8859-5
-
-iso8859-7/Compose: el.ISO8859-7
-
-iso8859-13/Compose: lt.ISO8859-13
-iso8859-13/Compose: lv.ISO8859-13
-
+XCOMM $XFree86: xc/nls/compose.dir,v 1.23 2002/12/10 04:23:51 dawes Exp $
+XCOMM
+iso8859-1/Compose: C
+iso8859-1/Compose: af_ZA.ISO8859-1
+iso8859-6/Compose: ar_AA.ISO8859-6
+iso8859-6/Compose: ar_BH.ISO8859-6
+iso8859-6/Compose: ar_DZ.ISO8859-6
+iso8859-6/Compose: ar_EG.ISO8859-6
+iso8859-6/Compose: ar_IQ.ISO8859-6
+iso8859-6/Compose: ar_JO.ISO8859-6
+iso8859-6/Compose: ar_KW.ISO8859-6
+iso8859-6/Compose: ar_LB.ISO8859-6
+iso8859-6/Compose: ar_LY.ISO8859-6
+iso8859-6/Compose: ar_MA.ISO8859-6
+iso8859-6/Compose: ar_OM.ISO8859-6
+iso8859-6/Compose: ar_QA.ISO8859-6
+iso8859-6/Compose: ar_SA.ISO8859-6
+iso8859-6/Compose: ar_TN.ISO8859-6
+iso8859-6/Compose: ar_YE.ISO8859-6
+iso8859-9e/Compose: az_AZ.ISO8859-9E
+koi8-c/Compose: a3_AZ.KOI8-C
+microsoft-cp1251/Compose: be_BY.CP1251
+iso8859-5/Compose: bg_BG.ISO8859-5
+microsoft-cp1251/Compose: bg_BG.CP1251
+iso8859-1/Compose: br_FR.ISO8859-1
+iso8859-14/Compose: br_FR.ISO8859-14
+iso8859-15/Compose: br_FR.ISO8859-15
+iso8859-1/Compose: ca_ES.ISO8859-1
+iso8859-15/Compose: ca_ES.ISO8859-15
+iso8859-2/Compose: cs_CZ.ISO8859-2
+iso8859-1/Compose: cy_GB.ISO8859-1
+iso8859-14/Compose: cy_GB.ISO8859-14
+iso8859-15/Compose: cy_GB.ISO8859-15
+iso8859-1/Compose: da_DK.ISO8859-1
+iso8859-15/Compose: da_DK.ISO8859-15
+iso8859-1/Compose: de_AT.ISO8859-1
+iso8859-15/Compose: de_AT.ISO8859-15
+iso8859-1/Compose: de_CH.ISO8859-1
+iso8859-15/Compose: de_CH.ISO8859-15
+iso8859-1/Compose: de_DE.ISO8859-1
+iso8859-15/Compose: de_DE.ISO8859-15
+iso8859-1/Compose: de_LI.ISO8859-1
+iso8859-15/Compose: de_LI.ISO8859-15
+iso8859-1/Compose: de_LU.ISO8859-1
+iso8859-15/Compose: de_LU.ISO8859-15
+iso8859-7/Compose: el_GR.ISO8859-7
+iso8859-1/Compose: en_AU.ISO8859-1
+iso8859-1/Compose: en_BZ.ISO8859-1
+iso8859-1/Compose: en_CA.ISO8859-1
+iso8859-1/Compose: en_GB.ISO8859-1
+iso8859-15/Compose: en_GB.ISO8859-15
+iso8859-1/Compose: en_IE.ISO8859-1
+iso8859-15/Compose: en_IE.ISO8859-15
+iso8859-1/Compose: en_JM.ISO8859-1
+iso8859-1/Compose: en_NZ.ISO8859-1
+iso8859-1/Compose: en_TT.ISO8859-1
+iso8859-1/Compose: en_UK.ISO8859-1
+iso8859-15/Compose: en_UK.ISO8859-15
+iso8859-1/Compose: en_US.ISO8859-1
+iso8859-15/Compose: en_US.ISO8859-15
+iso8859-1/Compose: en_ZA.ISO8859-1
+iso8859-15/Compose: en_ZA.ISO8859-15
+iso8859-3/Compose: eo_XX.ISO8859-3
+iso8859-1/Compose: es_AR.ISO8859-1
+iso8859-1/Compose: es_BO.ISO8859-1
+iso8859-1/Compose: es_CL.ISO8859-1
+iso8859-1/Compose: es_CO.ISO8859-1
+iso8859-1/Compose: es_CR.ISO8859-1
+iso8859-1/Compose: es_DO.ISO8859-1
+iso8859-1/Compose: es_EC.ISO8859-1
+iso8859-1/Compose: es_ES.ISO8859-1
+iso8859-15/Compose: es_ES.ISO8859-15
+iso8859-1/Compose: es_GT.ISO8859-1
+iso8859-1/Compose: es_HN.ISO8859-1
+iso8859-1/Compose: es_MX.ISO8859-1
+iso8859-1/Compose: es_NI.ISO8859-1
+iso8859-1/Compose: es_PA.ISO8859-1
+iso8859-1/Compose: es_PE.ISO8859-1
+iso8859-1/Compose: es_PR.ISO8859-1
+iso8859-1/Compose: es_PY.ISO8859-1
+iso8859-1/Compose: es_SV.ISO8859-1
+iso8859-1/Compose: es_UY.ISO8859-1
+iso8859-1/Compose: es_VE.ISO8859-1
+iso8859-1/Compose: et_EE.ISO8859-1
+iso8859-4/Compose: et_EE.ISO8859-4
+iso8859-13/Compose: et_EE.ISO8859-13
+iso8859-15/Compose: et_EE.ISO8859-15
+iso8859-1/Compose: eu_ES.ISO8859-1
+iso8859-15/Compose: eu_ES.ISO8859-15
+isiri-3342/Compose: fa_IR.ISIRI-3342
+iso8859-1/Compose: fi_FI.ISO8859-1
+iso8859-15/Compose: fi_FI.ISO8859-15
+iso8859-1/Compose: fo_FO.ISO8859-1
+iso8859-15/Compose: fo_FO.ISO8859-15
+iso8859-1/Compose: fr_BE.ISO8859-1
+iso8859-15/Compose: fr_BE.ISO8859-15
+iso8859-1/Compose: fr_CA.ISO8859-1
+iso8859-15/Compose: fr_CA.ISO8859-15
+iso8859-1/Compose: fr_CH.ISO8859-1
+iso8859-15/Compose: fr_CH.ISO8859-15
+iso8859-1/Compose: fr_FR.ISO8859-1
+iso8859-15/Compose: fr_FR.ISO8859-15
+iso8859-1/Compose: fr_LU.ISO8859-1
+iso8859-15/Compose: fr_LU.ISO8859-15
+iso8859-1/Compose: ga_IE.ISO8859-1
+iso8859-14/Compose: ga_IE.ISO8859-14
+iso8859-15/Compose: ga_IE.ISO8859-15
+iso8859-1/Compose: gd_GB.ISO8859-1
+iso8859-14/Compose: gd_GB.ISO8859-14
+iso8859-15/Compose: gd_GB.ISO8859-15
+iso8859-1/Compose: gl_ES.ISO8859-1
+iso8859-15/Compose: gl_ES.ISO8859-15
+iso8859-1/Compose: gv_GB.ISO8859-1
+iso8859-14/Compose: gv_GB.ISO8859-14
+iso8859-15/Compose: gv_GB.ISO8859-15
+iso8859-8/Compose: he_IL.ISO8859-8
+microsoft-cp1255/Compose: he_IL.CP1255
+iscii-dev/Compose: hi_IN.ISCII-DEV
+iso8859-2/Compose: hr_HR.ISO8859-2
+iso8859-2/Compose: hu_HU.ISO8859-2
+armscii-8/Compose: hy_AM.ARMSCII-8
+iso8859-1/Compose: id_ID.ISO8859-1
+iso8859-15/Compose: id_ID.ISO8859-15
+iso8859-1/Compose: is_IS.ISO8859-1
+iso8859-15/Compose: is_IS.ISO8859-15
+iso8859-1/Compose: it_CH.ISO8859-1
+iso8859-15/Compose: it_CH.ISO8859-15
+iso8859-1/Compose: it_IT.ISO8859-1
+iso8859-15/Compose: it_IT.ISO8859-15
+ja/Compose: ja_JP.eucJP
+ja.SJIS/Compose: ja_JP.SJIS
+ja.JIS/Compose: ja_JP.JIS7
+georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY
+georgian-ps/Compose: ka_GE.GEORGIAN-PS
+iso8859-1/Compose: kl_GL.ISO8859-1
+iso8859-15/Compose: kl_GL.ISO8859-15
+iso8859-1/Compose: kw_GB.ISO8859-1
+iso8859-14/Compose: kw_GB.ISO8859-14
+iso8859-15/Compose: kw_GB.ISO8859-15
+ko/Compose: ko_KR.eucKR
+ibm-cp1133/Compose: lo_LA.IBM-CP1133
+mulelao-1/Compose: lo_LA.MULELAO-1
+iso8859-1/Compose: lt_LN.ISO8859-1
+iso8859-4/Compose: lt_LT.ISO8859-4
+iso8859-13/Compose: lt_LT.ISO8859-13
+iso8859-4/Compose: lv_LV.ISO8859-4
+iso8859-13/Compose: lv_LV.ISO8859-13
+iso8859-13/Compose: mi_NZ.ISO8859-13
+iso8859-5/Compose: mk_MK.ISO8859-5
+XCOMM mk_MK.UTF-8/Compose: mk_MK.UTF-8
+microsoft-cp1251/Compose: mk_MK.CP1251
+iso8859-1/Compose: ms_MY.ISO8859-1
+iso8859-3/Compose: mt_MT.ISO8859-3
+iso8859-1/Compose: nl_BE.ISO8859-1
+iso8859-15/Compose: nl_BE.ISO8859-15
+iso8859-1/Compose: nl_NL.ISO8859-1
+iso8859-15/Compose: nl_NL.ISO8859-15
+iso8859-1/Compose: no_NO.ISO8859-1
+iso8859-15/Compose: no_NO.ISO8859-15
+iso8859-1/Compose: nb_NO.ISO8859-1
+iso8859-15/Compose: nb_NO.ISO8859-15
+iso8859-1/Compose: nn_NO.ISO8859-1
+iso8859-15/Compose: nn_NO.ISO8859-15
+iso8859-1/Compose: ny_NO.ISO8859-1
+iso8859-15/Compose: ny_NO.ISO8859-15
+iso8859-1/Compose: oc_FR.ISO8859-1
+iso8859-15/Compose: oc_FR.ISO8859-15
+iso8859-1/Compose: pd_DE.ISO8859-1
+iso8859-1/Compose: pd_US.ISO8859-1
+iso8859-1/Compose: ph_PH.ISO8859-1
+iso8859-2/Compose: pl_PL.ISO8859-2
+iso8859-1/Compose: pp_AN.ISO8859-1
+iso8859-1/Compose: pt_BR.ISO8859-1
+iso8859-15/Compose: pt_BR.ISO8859-15
+iso8859-1/Compose: pt_PT.ISO8859-1
+iso8859-15/Compose: pt_PT.ISO8859-15
+iso8859-2/Compose: ro_RO.ISO8859-2
+koi8-r/Compose: ru_RU.KOI8-R
+iso8859-5/Compose: ru_RU.ISO8859-5
+microsoft-cp1251/Compose: ru_RU.CP1251
+koi8-u/Compose: ru_UA.KOI8-U
+iso8859-2/Compose: sh_YU.ISO8859-2
+iso8859-2/Compose: sk_SK.ISO8859-2
+iso8859-2/Compose: sl_CS.ISO8859-2
+iso8859-2/Compose: sl_SI.ISO8859-2
+iso8859-5/Compose: sp_YU.ISO8859-5
+iso8859-2/Compose: sq_AL.ISO8859-2
+iso8859-2/Compose: sr_SP.ISO8859-2
+iso8859-2/Compose: sr_YU.ISO8859-2
+iso8859-5/Compose: sr_YU.ISO8859-5
+iso8859-1/Compose: sv_FI.ISO8859-1
+iso8859-15/Compose: sv_FI.ISO8859-15
+iso8859-1/Compose: sv_SE.ISO8859-1
+iso8859-15/Compose: sv_SE.ISO8859-15
+tscii-0/Compose: ta_IN.TSCII-0
+koi8-c/Compose: tg_TJ.KOI8-C
+iso8859-1/Compose: tl_PH.ISO8859-1
+iso8859-9/Compose: tr_TR.ISO8859-9
+tatar-cyr/Compose: tt_RU.TATAR-CYR
+koi8-c/Compose: tt_RU.KOI8-C
+koi8-u/Compose: uk_UA.KOI8-U
+microsoft-cp1256/Compose: ur_PK.CP1256
+vi_VN.viscii/Compose: vi_VN.VISCII
+vi_VN.tcvn/Compose: vi_VN.TCVN
+iso8859-1/Compose: wa_BE.ISO8859-1
+microsoft-cp1255/Compose: yi_US.CP1256
+zh_CN/Compose: zh_CN.eucCN
+zh_CN/Compose: zh_CN.GB2312
+zh_CN.gbk/Compose: zh_CN.GBK
+zh_TW.big5/Compose: zh_TW.big5
+zh_TW.big5/Compose: zh_TW.Big5
+zh_TW/Compose: zh_TW.eucTW
+XCOMM
+XCOMM
+en_US.UTF-8/Compose: af_ZA.UTF-8
+en_US.UTF-8/Compose: ar_AA.UTF-8
+en_US.UTF-8/Compose: ar_BH.UTF-8
+en_US.UTF-8/Compose: ar_DZ.UTF-8
+en_US.UTF-8/Compose: ar_EG.UTF-8
+en_US.UTF-8/Compose: ar_IQ.UTF-8
+en_US.UTF-8/Compose: ar_JO.UTF-8
+en_US.UTF-8/Compose: ar_KW.UTF-8
+en_US.UTF-8/Compose: ar_LB.UTF-8
+en_US.UTF-8/Compose: ar_LY.UTF-8
+en_US.UTF-8/Compose: ar_MA.UTF-8
+en_US.UTF-8/Compose: ar_OM.UTF-8
+en_US.UTF-8/Compose: ar_QA.UTF-8
+en_US.UTF-8/Compose: ar_SA.UTF-8
+en_US.UTF-8/Compose: ar_TN.UTF-8
+en_US.UTF-8/Compose: ar_YE.UTF-8
+en_US.UTF-8/Compose: az_AZ.UTF-8
+en_US.UTF-8/Compose: a3_AZ.UTF-8
+en_US.UTF-8/Compose: be_BY.UTF-8
+en_US.UTF-8/Compose: bg_BG.UTF-8
+en_US.UTF-8/Compose: br_FR.UTF-8
+en_US.UTF-8/Compose: ca_ES.UTF-8
+en_US.UTF-8/Compose: cs_CZ.UTF-8
+en_US.UTF-8/Compose: cy_GB.UTF-8
+en_US.UTF-8/Compose: cz_CZ.UTF-8
+en_US.UTF-8/Compose: da_DK.UTF-8
+en_US.UTF-8/Compose: de_AT.UTF-8
+en_US.UTF-8/Compose: de_BE.UTF-8
+en_US.UTF-8/Compose: de_CH.UTF-8
+en_US.UTF-8/Compose: de_DE.UTF-8
+en_US.UTF-8/Compose: de_LI.UTF-8
+en_US.UTF-8/Compose: de_LU.UTF-8
+el_GR.UTF-8/Compose: el_GR.UTF-8
+en_US.UTF-8/Compose: en_AU.UTF-8
+en_US.UTF-8/Compose: en_BZ.UTF-8
+en_US.UTF-8/Compose: en_CA.UTF-8
+en_US.UTF-8/Compose: en_GB.UTF-8
+en_US.UTF-8/Compose: en_IE.UTF-8
+en_US.UTF-8/Compose: en_JM.UTF-8
+en_US.UTF-8/Compose: en_NZ.UTF-8
+en_US.UTF-8/Compose: en_TT.UTF-8
+en_US.UTF-8/Compose: en_UK.UTF-8
+en_US.UTF-8/Compose: en_US.UTF-8
+en_US.UTF-8/Compose: en_ZA.UTF-8
+en_US.UTF-8/Compose: eo_XX.UTF-8
+en_US.UTF-8/Compose: es_AR.UTF-8
+en_US.UTF-8/Compose: es_BO.UTF-8
+en_US.UTF-8/Compose: es_CL.UTF-8
+en_US.UTF-8/Compose: es_CO.UTF-8
+en_US.UTF-8/Compose: es_CR.UTF-8
+en_US.UTF-8/Compose: es_DO.UTF-8
+en_US.UTF-8/Compose: es_EC.UTF-8
+en_US.UTF-8/Compose: es_ES.UTF-8
+en_US.UTF-8/Compose: es_GT.UTF-8
+en_US.UTF-8/Compose: es_HN.UTF-8
+en_US.UTF-8/Compose: es_MX.UTF-8
+en_US.UTF-8/Compose: es_NI.UTF-8
+en_US.UTF-8/Compose: es_PA.UTF-8
+en_US.UTF-8/Compose: es_PE.UTF-8
+en_US.UTF-8/Compose: es_PR.UTF-8
+en_US.UTF-8/Compose: es_PY.UTF-8
+en_US.UTF-8/Compose: es_SV.UTF-8
+en_US.UTF-8/Compose: es_UY.UTF-8
+en_US.UTF-8/Compose: es_VE.UTF-8
+en_US.UTF-8/Compose: et_EE.UTF-8
+en_US.UTF-8/Compose: eu_ES.UTF-8
+en_US.UTF-8/Compose: fa_IR.UTF-8
+en_US.UTF-8/Compose: fi_FI.UTF-8
+en_US.UTF-8/Compose: fo_FO.UTF-8
+en_US.UTF-8/Compose: fr_BE.UTF-8
+en_US.UTF-8/Compose: fr_CA.UTF-8
+en_US.UTF-8/Compose: fr_CH.UTF-8
+en_US.UTF-8/Compose: fr_FR.UTF-8
+en_US.UTF-8/Compose: fr_LU.UTF-8
+en_US.UTF-8/Compose: ga_IE.UTF-8
+en_US.UTF-8/Compose: gd_GB.UTF-8
+en_US.UTF-8/Compose: gl_ES.UTF-8
+en_US.UTF-8/Compose: gv_GB.UTF-8
+en_US.UTF-8/Compose: he_IL.UTF-8
+en_US.UTF-8/Compose: hi_IN.UTF-8
+en_US.UTF-8/Compose: hr_HR.UTF-8
+en_US.UTF-8/Compose: hu_HU.UTF-8
+en_US.UTF-8/Compose: hy_AM.UTF-8
+en_US.UTF-8/Compose: id_ID.UTF-8
+en_US.UTF-8/Compose: is_IS.UTF-8
+en_US.UTF-8/Compose: it_CH.UTF-8
+en_US.UTF-8/Compose: it_IT.UTF-8
+en_US.UTF-8/Compose: iu_CA.UTF-8
+en_US.UTF-8/Compose: ka_GE.UTF-8
+en_US.UTF-8/Compose: kl_GL.UTF-8
+en_US.UTF-8/Compose: kw_GB.UTF-8
+en_US.UTF-8/Compose: lo_LA.UTF-8
+en_US.UTF-8/Compose: lt_LT.UTF-8
+en_US.UTF-8/Compose: lv_LV.UTF-8
+en_US.UTF-8/Compose: mi_NZ.UTF-8
+en_US.UTF-8/Compose: mk_MK.UTF-8
+en_US.UTF-8/Compose: ms_MY.UTF-8
+en_US.UTF-8/Compose: nl_BE.UTF-8
+en_US.UTF-8/Compose: nl_NL.UTF-8
+en_US.UTF-8/Compose: no_NO.UTF-8
+en_US.UTF-8/Compose: nb_NO.UTF-8
+en_US.UTF-8/Compose: ny_NO.UTF-8
+en_US.UTF-8/Compose: oc_FR.UTF-8
+en_US.UTF-8/Compose: pd_DE.UTF-8
+en_US.UTF-8/Compose: pd_US.UTF-8
+en_US.UTF-8/Compose: ph_PH.UTF-8
+en_US.UTF-8/Compose: pl_PL.UTF-8
+en_US.UTF-8/Compose: pp_AN.UTF-8
+en_US.UTF-8/Compose: pt_BR.UTF-8
+en_US.UTF-8/Compose: pt_PT.UTF-8
+en_US.UTF-8/Compose: ro_RO.UTF-8
+en_US.UTF-8/Compose: ru_RU.UTF-8
+en_US.UTF-8/Compose: ru_UA.UTF-8
+en_US.UTF-8/Compose: sk_SK.UTF-8
+en_US.UTF-8/Compose: sl_SI.UTF-8
+en_US.UTF-8/Compose: sq_AL.UTF-8
+en_US.UTF-8/Compose: sr_YU.UTF-8
+en_US.UTF-8/Compose: sv_FI.UTF-8
+en_US.UTF-8/Compose: sv_SE.UTF-8
+en_US.UTF-8/Compose: ta_IN.UTF-8
+en_US.UTF-8/Compose: tg_TJ.UTF-8
+en_US.UTF-8/Compose: th_TH.UTF-8
+en_US.UTF-8/Compose: tl_PH.UTF-8
+en_US.UTF-8/Compose: tr_TR.UTF-8
+en_US.UTF-8/Compose: tt_RU.UTF-8
+en_US.UTF-8/Compose: uk_UA.UTF-8
+en_US.UTF-8/Compose: ur_PK.UTF-8
+en_US.UTF-8/Compose: vi_VN.UTF-8
+en_US.UTF-8/Compose: wa_BE.UTF-8
+en_US.UTF-8/Compose: yi_US.UTF-8
diff --git a/nls/el_GR.UTF-8/Compose.pre b/nls/el_GR.UTF-8/Compose.pre
new file mode 100644
index 00000000..1e26cd13
--- /dev/null
+++ b/nls/el_GR.UTF-8/Compose.pre
@@ -0,0 +1,1575 @@
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/el_GR.UTF-8,v 1.2 2002/07/01 02:25:54 tsi Exp $
+XCOMM
+XCOMM UTF-8 compose sequence definitions for the greek keyboard layout.
+XCOMM
+XCOMM This file is mostly meant to be used along with the xkb/symbols/el
+XCOMM symbols definition file. In addition, the dead key definitions in
+XCOMM the machine generated part are really only relevant to the
+XCOMM "polytonic" variant in that file.
+XCOMM
+XCOMM The definitions herein cover the following ISO 10646 / Unicode
+XCOMM ranges:
+XCOMM - Basic Latin (0000-007F) (complete coverage)
+XCOMM - Latin-1 Supplement (0080-00FF) (complete coverage)
+XCOMM - Greek and Coptic (0370-03FF) (only the big ISO 8859-7 based
+XCOMM part at the beginning)
+XCOMM - Greek Extended (1F00-1FFF) (complete coverage)
+XCOMM - There are also six (6) characters from other ranges.
+XCOMM Moreover, the following character sets are completely covered:
+XCOMM - ISO 8859-1
+XCOMM - ISO 8859-7
+XCOMM
+XCOMM This file consists of four parts. Two of them have been adapted from
+XCOMM the iso8859-1/Compose and iso8859-7/Compose files. The other two
+XCOMM parts have been created by:
+XCOMM Vasilis Vasaitis <vvas@hal.csd.auth.gr>
+XCOMM based on the idea and initial implementation by:
+XCOMM Alejandros Diamandidis <adia@egnatia.ee.auth.gr>
+
+XCOMM Part 1
+XCOMM
+XCOMM ISO 8859-1 (Latin-1) multi-key definitions extracted and converted
+XCOMM from the iso8859-1/Compose file.
+
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "¡" exclamdown
+<Multi_key> <c> <slash> : "¢" cent
+<Multi_key> <slash> <c> : "¢" cent
+<Multi_key> <C> <slash> : "¢" cent
+<Multi_key> <slash> <C> : "¢" cent
+<Multi_key> <C> <bar> : "¢" cent
+<Multi_key> <bar> <C> : "¢" cent
+<Multi_key> <c> <bar> : "¢" cent
+<Multi_key> <bar> <c> : "¢" cent
+<Multi_key> <l> <minus> : "£" sterling
+<Multi_key> <minus> <l> : "£" sterling
+<Multi_key> <L> <minus> : "£" sterling
+<Multi_key> <minus> <L> : "£" sterling
+<Multi_key> <l> <equal> : "£" sterling
+<Multi_key> <equal> <l> : "£" sterling
+<Multi_key> <L> <equal> : "£" sterling
+<Multi_key> <equal> <L> : "£" sterling
+<Multi_key> <y> <minus> : "Â¥" yen
+<Multi_key> <minus> <y> : "Â¥" yen
+<Multi_key> <Y> <minus> : "Â¥" yen
+<Multi_key> <minus> <Y> : "Â¥" yen
+<Multi_key> <y> <equal> : "Â¥" yen
+<Multi_key> <equal> <y> : "Â¥" yen
+<Multi_key> <Y> <equal> : "Â¥" yen
+<Multi_key> <equal> <Y> : "Â¥" yen
+<Multi_key> <s> <o> : "§" section
+<Multi_key> <o> <s> : "§" section
+<Multi_key> <S> <O> : "§" section
+<Multi_key> <O> <S> : "§" section
+<Multi_key> <S> <exclam> : "§" section
+<Multi_key> <exclam> <S> : "§" section
+<Multi_key> <s> <exclam> : "§" section
+<Multi_key> <exclam> <s> : "§" section
+<Multi_key> <S> <0> : "§" section
+<Multi_key> <0> <S> : "§" section
+<Multi_key> <s> <0> : "§" section
+<Multi_key> <0> <s> : "§" section
+<Multi_key> <x> <o> : "¤" currency
+<Multi_key> <o> <x> : "¤" currency
+<Multi_key> <X> <O> : "¤" currency
+<Multi_key> <O> <X> : "¤" currency
+<Multi_key> <x> <O> : "¤" currency
+<Multi_key> <O> <x> : "¤" currency
+<Multi_key> <X> <o> : "¤" currency
+<Multi_key> <o> <X> : "¤" currency
+<Multi_key> <x> <0> : "¤" currency
+<Multi_key> <0> <x> : "¤" currency
+<Multi_key> <X> <0> : "¤" currency
+<Multi_key> <0> <X> : "¤" currency
+<Multi_key> <c> <o> : "©" copyright
+<Multi_key> <o> <c> : "©" copyright
+<Multi_key> <C> <O> : "©" copyright
+<Multi_key> <O> <C> : "©" copyright
+<Multi_key> <c> <O> : "©" copyright
+<Multi_key> <O> <c> : "©" copyright
+<Multi_key> <C> <o> : "©" copyright
+<Multi_key> <o> <C> : "©" copyright
+<Multi_key> <c> <0> : "©" copyright
+<Multi_key> <0> <c> : "©" copyright
+<Multi_key> <C> <0> : "©" copyright
+<Multi_key> <0> <C> : "©" copyright
+<Multi_key> <parenleft> <c> : "©" copyright
+<Multi_key> <a> <underscore> : "ª" ordfeminine
+<Multi_key> <underscore> <a> : "ª" ordfeminine
+<Multi_key> <A> <underscore> : "ª" ordfeminine
+<Multi_key> <underscore> <A> : "ª" ordfeminine
+<Multi_key> <o> <underscore> : "º" masculine
+<Multi_key> <underscore> <o> : "º" masculine
+<Multi_key> <O> <underscore> : "º" masculine
+<Multi_key> <underscore> <O> : "º" masculine
+<Multi_key> <less> <less> : "«" guillemotleft
+<Multi_key> <greater> <greater> : "»" guillemotright
+<Multi_key> <0> <asciicircum> : "°" degree
+<Multi_key> <asciicircum> <0> : "°" degree
+<Multi_key> <0> <asterisk> : "°" degree
+<Multi_key> <asterisk> <0> : "°" degree
+<Multi_key> <plus> <minus> : "±" plusminus
+<Multi_key> <minus> <plus> : "±" plusminus
+<Multi_key> <slash> <u> : "µ" mu
+<Multi_key> <u> <slash> : "µ" mu
+<Multi_key> <slash> <U> : "µ" mu
+<Multi_key> <U> <slash> : "µ" mu
+<Multi_key> <1> <asciicircum> : "¹" onesuperior
+<Multi_key> <asciicircum> <1> : "¹" onesuperior
+<Multi_key> <S> <1> : "¹" onesuperior
+<Multi_key> <1> <S> : "¹" onesuperior
+<Multi_key> <s> <1> : "¹" onesuperior
+<Multi_key> <1> <s> : "¹" onesuperior
+<Multi_key> <2> <asciicircum> : "²" twosuperior
+<Multi_key> <asciicircum> <2> : "²" twosuperior
+<Multi_key> <S> <2> : "²" twosuperior
+<Multi_key> <2> <S> : "²" twosuperior
+<Multi_key> <s> <2> : "²" twosuperior
+<Multi_key> <2> <s> : "²" twosuperior
+<Multi_key> <3> <asciicircum> : "³" threesuperior
+<Multi_key> <asciicircum> <3> : "³" threesuperior
+<Multi_key> <S> <3> : "³" threesuperior
+<Multi_key> <3> <S> : "³" threesuperior
+<Multi_key> <s> <3> : "³" threesuperior
+<Multi_key> <3> <s> : "³" threesuperior
+<Multi_key> <p> <exclam> : "¶" paragraph
+<Multi_key> <exclam> <p> : "¶" paragraph
+<Multi_key> <P> <exclam> : "¶" paragraph
+<Multi_key> <exclam> <P> : "¶" paragraph
+<Multi_key> <period> <asciicircum> : "·" periodcentered
+<Multi_key> <asciicircum> <period> : "·" periodcentered
+<Multi_key> <period> <period> : "·" periodcentered
+<Multi_key> <1> <4> : "¼" onequarter
+<Multi_key> <1> <2> : "½" onehalf
+<Multi_key> <3> <4> : "¾" threequarters
+<Multi_key> <question> <question> : "¿" questiondown
+<Multi_key> <space> <space> : " " nobreakspace
+<Multi_key> <bar> <bar> : "¦" brokenbar
+<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
+<Multi_key> <asciicircum> <exclam> : "¦" brokenbar
+<Multi_key> <V> <B> : "¦" brokenbar
+<Multi_key> <B> <V> : "¦" brokenbar
+<Multi_key> <v> <b> : "¦" brokenbar
+<Multi_key> <b> <v> : "¦" brokenbar
+<Multi_key> <minus> <comma> : "¬" notsign
+<Multi_key> <comma> <minus> : "¬" notsign
+<Multi_key> <minus> <minus> : "­" hyphen
+<Multi_key> <R> <O> : "®" registered
+<Multi_key> <O> <R> : "®" registered
+<Multi_key> <parenleft> <r> : "®" registered
+<Multi_key> <minus> <asciicircum> : "¯" macron
+<Multi_key> <asciicircum> <minus> : "¯" macron
+<Multi_key> <underscore> <asciicircum> : "¯" macron
+<Multi_key> <asciicircum> <underscore> : "¯" macron
+<Multi_key> <underscore> <underscore> : "¯" macron
+<Multi_key> <minus> <colon> : "÷" division
+<Multi_key> <colon> <minus> : "÷" division
+<Multi_key> <x> <x> : "×" multiply
+<Multi_key> <apostrophe> <apostrophe> : "´" acute
+<Multi_key> <comma> <comma> : "¸" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "¨" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "À" Agrave
+<Multi_key> <grave> <A> : "À" Agrave
+<Multi_key> <A> <acute> : "Ã" Aacute
+<Multi_key> <acute> <A> : "Ã" Aacute
+<Multi_key> <A> <apostrophe> : "Ã" Aacute
+<Multi_key> <apostrophe> <A> : "Ã" Aacute
+<Multi_key> <A> <asciicircum> : "Â" Acircumflex
+<Multi_key> <asciicircum> <A> : "Â" Acircumflex
+<Multi_key> <A> <greater> : "Â" Acircumflex
+<Multi_key> <greater> <A> : "Â" Acircumflex
+<Multi_key> <A> <asciitilde> : "Ã" Atilde
+<Multi_key> <asciitilde> <A> : "Ã" Atilde
+<Multi_key> <A> <minus> : "Ã" Atilde
+<Multi_key> <minus> <A> : "Ã" Atilde
+<Multi_key> <A> <quotedbl> : "Ä" Adiaeresis
+<Multi_key> <quotedbl> <A> : "Ä" Adiaeresis
+<Multi_key> <A> <diaeresis> : "Ä" Adiaeresis
+<Multi_key> <diaeresis> <A> : "Ä" Adiaeresis
+<Multi_key> <A> <asterisk> : "Ã…" Aring
+<Multi_key> <asterisk> <A> : "Ã…" Aring
+<Multi_key> <A> <A> : "Ã…" Aring
+<Multi_key> <A> <O> : "Ã…" Aring
+<Multi_key> <A> <E> : "Æ" AE
+<Multi_key> <a> <grave> : "à" agrave
+<Multi_key> <grave> <a> : "à" agrave
+<Multi_key> <a> <acute> : "á" aacute
+<Multi_key> <acute> <a> : "á" aacute
+<Multi_key> <a> <apostrophe> : "á" aacute
+<Multi_key> <apostrophe> <a> : "á" aacute
+<Multi_key> <a> <asciicircum> : "â" acircumflex
+<Multi_key> <asciicircum> <a> : "â" acircumflex
+<Multi_key> <a> <greater> : "â" acircumflex
+<Multi_key> <greater> <a> : "â" acircumflex
+<Multi_key> <a> <asciitilde> : "ã" atilde
+<Multi_key> <asciitilde> <a> : "ã" atilde
+<Multi_key> <a> <minus> : "ã" atilde
+<Multi_key> <minus> <a> : "ã" atilde
+<Multi_key> <a> <quotedbl> : "ä" adiaeresis
+<Multi_key> <quotedbl> <a> : "ä" adiaeresis
+<Multi_key> <a> <diaeresis> : "ä" adiaeresis
+<Multi_key> <diaeresis> <a> : "ä" adiaeresis
+<Multi_key> <a> <asterisk> : "Ã¥" aring
+<Multi_key> <asterisk> <a> : "Ã¥" aring
+<Multi_key> <a> <a> : "Ã¥" aring
+<Multi_key> <a> <o> : "Ã¥" aring
+<Multi_key> <a> <e> : "æ" ae
+<Multi_key> <acute> <C> : "Ç" Ccedilla
+<Multi_key> <acute> <c> : "ç" ccedilla
+<Multi_key> <C> <comma> : "Ç" Ccedilla
+<Multi_key> <comma> <C> : "Ç" Ccedilla
+<Multi_key> <c> <comma> : "ç" ccedilla
+<Multi_key> <comma> <c> : "ç" ccedilla
+<Multi_key> <minus> <D> : "Ã" ETH
+<Multi_key> <D> <minus> : "Ã" ETH
+<Multi_key> <minus> <d> : "ð" eth
+<Multi_key> <d> <minus> : "ð" eth
+<Multi_key> <E> <grave> : "È" Egrave
+<Multi_key> <grave> <E> : "È" Egrave
+<Multi_key> <E> <acute> : "É" Eacute
+<Multi_key> <acute> <E> : "É" Eacute
+<Multi_key> <E> <apostrophe> : "É" Eacute
+<Multi_key> <apostrophe> <E> : "É" Eacute
+<Multi_key> <E> <asciicircum> : "Ê" Ecircumflex
+<Multi_key> <asciicircum> <E> : "Ê" Ecircumflex
+<Multi_key> <E> <greater> : "Ê" Ecircumflex
+<Multi_key> <greater> <E> : "Ê" Ecircumflex
+<Multi_key> <E> <quotedbl> : "Ë" Ediaeresis
+<Multi_key> <quotedbl> <E> : "Ë" Ediaeresis
+<Multi_key> <E> <diaeresis> : "Ë" Ediaeresis
+<Multi_key> <diaeresis> <E> : "Ë" Ediaeresis
+<Multi_key> <e> <grave> : "è" egrave
+<Multi_key> <grave> <e> : "è" egrave
+<Multi_key> <e> <acute> : "é" eacute
+<Multi_key> <acute> <e> : "é" eacute
+<Multi_key> <e> <apostrophe> : "é" eacute
+<Multi_key> <apostrophe> <e> : "é" eacute
+<Multi_key> <e> <asciicircum> : "ê" ecircumflex
+<Multi_key> <asciicircum> <e> : "ê" ecircumflex
+<Multi_key> <e> <greater> : "ê" ecircumflex
+<Multi_key> <greater> <e> : "ê" ecircumflex
+<Multi_key> <e> <quotedbl> : "ë" ediaeresis
+<Multi_key> <quotedbl> <e> : "ë" ediaeresis
+<Multi_key> <e> <diaeresis> : "ë" ediaeresis
+<Multi_key> <diaeresis> <e> : "ë" ediaeresis
+<Multi_key> <I> <grave> : "Ì" Igrave
+<Multi_key> <grave> <I> : "Ì" Igrave
+<Multi_key> <I> <acute> : "Ã" Iacute
+<Multi_key> <acute> <I> : "Ã" Iacute
+<Multi_key> <I> <apostrophe> : "Ã" Iacute
+<Multi_key> <apostrophe> <I> : "Ã" Iacute
+<Multi_key> <I> <asciicircum> : "ÃŽ" Icircumflex
+<Multi_key> <asciicircum> <I> : "ÃŽ" Icircumflex
+<Multi_key> <I> <greater> : "ÃŽ" Icircumflex
+<Multi_key> <greater> <I> : "ÃŽ" Icircumflex
+<Multi_key> <I> <quotedbl> : "Ã" Idiaeresis
+<Multi_key> <quotedbl> <I> : "Ã" Idiaeresis
+<Multi_key> <I> <diaeresis> : "Ã" Idiaeresis
+<Multi_key> <diaeresis> <I> : "Ã" Idiaeresis
+<Multi_key> <i> <grave> : "ì" igrave
+<Multi_key> <grave> <i> : "ì" igrave
+<Multi_key> <i> <acute> : "í" iacute
+<Multi_key> <acute> <i> : "í" iacute
+<Multi_key> <i> <apostrophe> : "í" iacute
+<Multi_key> <apostrophe> <i> : "í" iacute
+<Multi_key> <i> <asciicircum> : "î" icircumflex
+<Multi_key> <asciicircum> <i> : "î" icircumflex
+<Multi_key> <i> <greater> : "î" icircumflex
+<Multi_key> <greater> <i> : "î" icircumflex
+<Multi_key> <i> <quotedbl> : "ï" idiaeresis
+<Multi_key> <quotedbl> <i> : "ï" idiaeresis
+<Multi_key> <i> <diaeresis> : "ï" idiaeresis
+<Multi_key> <diaeresis> <i> : "ï" idiaeresis
+<Multi_key> <N> <asciitilde> : "Ñ" Ntilde
+<Multi_key> <asciitilde> <N> : "Ñ" Ntilde
+<Multi_key> <N> <minus> : "Ñ" Ntilde
+<Multi_key> <minus> <N> : "Ñ" Ntilde
+<Multi_key> <n> <asciitilde> : "ñ" ntilde
+<Multi_key> <asciitilde> <n> : "ñ" ntilde
+<Multi_key> <n> <minus> : "ñ" ntilde
+<Multi_key> <minus> <n> : "ñ" ntilde
+<Multi_key> <O> <grave> : "Ã’" Ograve
+<Multi_key> <grave> <O> : "Ã’" Ograve
+<Multi_key> <O> <acute> : "Ó" Oacute
+<Multi_key> <acute> <O> : "Ó" Oacute
+<Multi_key> <O> <apostrophe> : "Ó" Oacute
+<Multi_key> <apostrophe> <O> : "Ó" Oacute
+<Multi_key> <O> <asciicircum> : "Ô" Ocircumflex
+<Multi_key> <asciicircum> <O> : "Ô" Ocircumflex
+<Multi_key> <O> <greater> : "Ô" Ocircumflex
+<Multi_key> <greater> <O> : "Ô" Ocircumflex
+<Multi_key> <O> <asciitilde> : "Õ" Otilde
+<Multi_key> <asciitilde> <O> : "Õ" Otilde
+<Multi_key> <O> <minus> : "Õ" Otilde
+<Multi_key> <minus> <O> : "Õ" Otilde
+<Multi_key> <O> <quotedbl> : "Ö" Odiaeresis
+<Multi_key> <quotedbl> <O> : "Ö" Odiaeresis
+<Multi_key> <O> <diaeresis> : "Ö" Odiaeresis
+<Multi_key> <diaeresis> <O> : "Ö" Odiaeresis
+<Multi_key> <O> <slash> : "Ø" Ooblique
+<Multi_key> <slash> <O> : "Ø" Ooblique
+<Multi_key> <o> <grave> : "ò" ograve
+<Multi_key> <grave> <o> : "ò" ograve
+<Multi_key> <o> <acute> : "ó" oacute
+<Multi_key> <acute> <o> : "ó" oacute
+<Multi_key> <o> <apostrophe> : "ó" oacute
+<Multi_key> <apostrophe> <o> : "ó" oacute
+<Multi_key> <o> <asciicircum> : "ô" ocircumflex
+<Multi_key> <asciicircum> <o> : "ô" ocircumflex
+<Multi_key> <o> <greater> : "ô" ocircumflex
+<Multi_key> <greater> <o> : "ô" ocircumflex
+<Multi_key> <o> <asciitilde> : "õ" otilde
+<Multi_key> <asciitilde> <o> : "õ" otilde
+<Multi_key> <o> <minus> : "õ" otilde
+<Multi_key> <minus> <o> : "õ" otilde
+<Multi_key> <o> <quotedbl> : "ö" odiaeresis
+<Multi_key> <quotedbl> <o> : "ö" odiaeresis
+<Multi_key> <o> <diaeresis> : "ö" odiaeresis
+<Multi_key> <diaeresis> <o> : "ö" odiaeresis
+<Multi_key> <o> <slash> : "ø" oslash
+<Multi_key> <slash> <o> : "ø" oslash
+<Multi_key> <U> <grave> : "Ù" Ugrave
+<Multi_key> <grave> <U> : "Ù" Ugrave
+<Multi_key> <U> <acute> : "Ú" Uacute
+<Multi_key> <acute> <U> : "Ú" Uacute
+<Multi_key> <U> <apostrophe> : "Ú" Uacute
+<Multi_key> <apostrophe> <U> : "Ú" Uacute
+<Multi_key> <U> <asciicircum> : "Û" Ucircumflex
+<Multi_key> <asciicircum> <U> : "Û" Ucircumflex
+<Multi_key> <U> <greater> : "Û" Ucircumflex
+<Multi_key> <greater> <U> : "Û" Ucircumflex
+<Multi_key> <U> <quotedbl> : "Ü" Udiaeresis
+<Multi_key> <quotedbl> <U> : "Ü" Udiaeresis
+<Multi_key> <U> <diaeresis> : "Ü" Udiaeresis
+<Multi_key> <diaeresis> <U> : "Ü" Udiaeresis
+<Multi_key> <u> <grave> : "ù" ugrave
+<Multi_key> <grave> <u> : "ù" ugrave
+<Multi_key> <u> <acute> : "ú" uacute
+<Multi_key> <acute> <u> : "ú" uacute
+<Multi_key> <u> <apostrophe> : "ú" uacute
+<Multi_key> <apostrophe> <u> : "ú" uacute
+<Multi_key> <u> <asciicircum> : "û" ucircumflex
+<Multi_key> <asciicircum> <u> : "û" ucircumflex
+<Multi_key> <u> <greater> : "û" ucircumflex
+<Multi_key> <greater> <u> : "û" ucircumflex
+<Multi_key> <u> <quotedbl> : "ü" udiaeresis
+<Multi_key> <quotedbl> <u> : "ü" udiaeresis
+<Multi_key> <u> <diaeresis> : "ü" udiaeresis
+<Multi_key> <diaeresis> <u> : "ü" udiaeresis
+<Multi_key> <s> <s> : "ß" ssharp
+<Multi_key> <T> <H> : "Þ" THORN
+<Multi_key> <t> <h> : "þ" thorn
+<Multi_key> <Y> <acute> : "Ã" Yacute
+<Multi_key> <acute> <Y> : "Ã" Yacute
+<Multi_key> <Y> <apostrophe> : "Ã" Yacute
+<Multi_key> <apostrophe> <Y> : "Ã" Yacute
+<Multi_key> <y> <acute> : "ý" yacute
+<Multi_key> <acute> <y> : "ý" yacute
+<Multi_key> <y> <apostrophe> : "ý" yacute
+<Multi_key> <apostrophe> <y> : "ý" yacute
+<Multi_key> <y> <quotedbl> : "ÿ" ydiaeresis
+<Multi_key> <quotedbl> <y> : "ÿ" ydiaeresis
+<Multi_key> <y> <diaeresis> : "ÿ" ydiaeresis
+<Multi_key> <diaeresis> <y> : "ÿ" ydiaeresis
+
+XCOMM Part 2
+XCOMM
+XCOMM Greek Extended multi-key and dead key definitions. These have been
+XCOMM machine-generated by a perl script, found at:
+XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl
+
+<Multi_key> <greater> <Greek_alpha> : "á¼€" U1f00
+<dead_horn> <Greek_alpha> : "á¼€" U1f00
+<Multi_key> <less> <Greek_alpha> : "á¼" U1f01
+<dead_ogonek> <Greek_alpha> : "á¼" U1f01
+<Multi_key> <greater> <grave> <Greek_alpha> : "ἂ" U1f02
+<Multi_key> <grave> <greater> <Greek_alpha> : "ἂ" U1f02
+<dead_horn> <dead_grave> <Greek_alpha> : "ἂ" U1f02
+<dead_grave> <dead_horn> <Greek_alpha> : "ἂ" U1f02
+<Multi_key> <less> <grave> <Greek_alpha> : "ἃ" U1f03
+<Multi_key> <grave> <less> <Greek_alpha> : "ἃ" U1f03
+<dead_ogonek> <dead_grave> <Greek_alpha> : "ἃ" U1f03
+<dead_grave> <dead_ogonek> <Greek_alpha> : "ἃ" U1f03
+<Multi_key> <greater> <apostrophe> <Greek_alpha> : "ἄ" U1f04
+<Multi_key> <apostrophe> <greater> <Greek_alpha> : "ἄ" U1f04
+<dead_horn> <dead_acute> <Greek_alpha> : "ἄ" U1f04
+<dead_acute> <dead_horn> <Greek_alpha> : "ἄ" U1f04
+<Multi_key> <less> <apostrophe> <Greek_alpha> : "á¼…" U1f05
+<Multi_key> <apostrophe> <less> <Greek_alpha> : "á¼…" U1f05
+<dead_ogonek> <dead_acute> <Greek_alpha> : "á¼…" U1f05
+<dead_acute> <dead_ogonek> <Greek_alpha> : "á¼…" U1f05
+<Multi_key> <greater> <asciitilde> <Greek_alpha> : "ἆ" U1f06
+<Multi_key> <asciitilde> <greater> <Greek_alpha> : "ἆ" U1f06
+<dead_horn> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
+<dead_tilde> <dead_horn> <Greek_alpha> : "ἆ" U1f06
+<Multi_key> <less> <asciitilde> <Greek_alpha> : "ἇ" U1f07
+<Multi_key> <asciitilde> <less> <Greek_alpha> : "ἇ" U1f07
+<dead_ogonek> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
+<dead_tilde> <dead_ogonek> <Greek_alpha> : "ἇ" U1f07
+<Multi_key> <greater> <Greek_ALPHA> : "Ἀ" U1f08
+<dead_horn> <Greek_ALPHA> : "Ἀ" U1f08
+<Multi_key> <less> <Greek_ALPHA> : "Ἁ" U1f09
+<dead_ogonek> <Greek_ALPHA> : "Ἁ" U1f09
+<Multi_key> <greater> <grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<Multi_key> <grave> <greater> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_horn> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_grave> <dead_horn> <Greek_ALPHA> : "Ἂ" U1f0a
+<Multi_key> <less> <grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<Multi_key> <grave> <less> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_ogonek> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_grave> <dead_ogonek> <Greek_ALPHA> : "Ἃ" U1f0b
+<Multi_key> <greater> <apostrophe> <Greek_ALPHA> : "Ἄ" U1f0c
+<Multi_key> <apostrophe> <greater> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_horn> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_acute> <dead_horn> <Greek_ALPHA> : "Ἄ" U1f0c
+<Multi_key> <less> <apostrophe> <Greek_ALPHA> : "á¼" U1f0d
+<Multi_key> <apostrophe> <less> <Greek_ALPHA> : "á¼" U1f0d
+<dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
+<dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0d
+<Multi_key> <greater> <asciitilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<Multi_key> <asciitilde> <greater> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_horn> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_tilde> <dead_horn> <Greek_ALPHA> : "Ἆ" U1f0e
+<Multi_key> <less> <asciitilde> <Greek_ALPHA> : "á¼" U1f0f
+<Multi_key> <asciitilde> <less> <Greek_ALPHA> : "á¼" U1f0f
+<dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
+<dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0f
+<Multi_key> <greater> <Greek_epsilon> : "á¼" U1f10
+<dead_horn> <Greek_epsilon> : "á¼" U1f10
+<Multi_key> <less> <Greek_epsilon> : "ἑ" U1f11
+<dead_ogonek> <Greek_epsilon> : "ἑ" U1f11
+<Multi_key> <greater> <grave> <Greek_epsilon> : "á¼’" U1f12
+<Multi_key> <grave> <greater> <Greek_epsilon> : "á¼’" U1f12
+<dead_horn> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
+<dead_grave> <dead_horn> <Greek_epsilon> : "á¼’" U1f12
+<Multi_key> <less> <grave> <Greek_epsilon> : "ἓ" U1f13
+<Multi_key> <grave> <less> <Greek_epsilon> : "ἓ" U1f13
+<dead_ogonek> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
+<dead_grave> <dead_ogonek> <Greek_epsilon> : "ἓ" U1f13
+<Multi_key> <greater> <apostrophe> <Greek_epsilon> : "á¼”" U1f14
+<Multi_key> <apostrophe> <greater> <Greek_epsilon> : "á¼”" U1f14
+<dead_horn> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
+<dead_acute> <dead_horn> <Greek_epsilon> : "á¼”" U1f14
+<Multi_key> <less> <apostrophe> <Greek_epsilon> : "ἕ" U1f15
+<Multi_key> <apostrophe> <less> <Greek_epsilon> : "ἕ" U1f15
+<dead_ogonek> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
+<dead_acute> <dead_ogonek> <Greek_epsilon> : "ἕ" U1f15
+<Multi_key> <greater> <Greek_EPSILON> : "Ἐ" U1f18
+<dead_horn> <Greek_EPSILON> : "Ἐ" U1f18
+<Multi_key> <less> <Greek_EPSILON> : "á¼™" U1f19
+<dead_ogonek> <Greek_EPSILON> : "á¼™" U1f19
+<Multi_key> <greater> <grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<Multi_key> <grave> <greater> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_horn> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_grave> <dead_horn> <Greek_EPSILON> : "Ἒ" U1f1a
+<Multi_key> <less> <grave> <Greek_EPSILON> : "á¼›" U1f1b
+<Multi_key> <grave> <less> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_ogonek> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_grave> <dead_ogonek> <Greek_EPSILON> : "á¼›" U1f1b
+<Multi_key> <greater> <apostrophe> <Greek_EPSILON> : "Ἔ" U1f1c
+<Multi_key> <apostrophe> <greater> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_horn> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_acute> <dead_horn> <Greek_EPSILON> : "Ἔ" U1f1c
+<Multi_key> <less> <apostrophe> <Greek_EPSILON> : "á¼" U1f1d
+<Multi_key> <apostrophe> <less> <Greek_EPSILON> : "á¼" U1f1d
+<dead_ogonek> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
+<dead_acute> <dead_ogonek> <Greek_EPSILON> : "á¼" U1f1d
+<Multi_key> <greater> <Greek_eta> : "á¼ " U1f20
+<dead_horn> <Greek_eta> : "á¼ " U1f20
+<Multi_key> <less> <Greek_eta> : "ἡ" U1f21
+<dead_ogonek> <Greek_eta> : "ἡ" U1f21
+<Multi_key> <greater> <grave> <Greek_eta> : "á¼¢" U1f22
+<Multi_key> <grave> <greater> <Greek_eta> : "á¼¢" U1f22
+<dead_horn> <dead_grave> <Greek_eta> : "á¼¢" U1f22
+<dead_grave> <dead_horn> <Greek_eta> : "á¼¢" U1f22
+<Multi_key> <less> <grave> <Greek_eta> : "á¼£" U1f23
+<Multi_key> <grave> <less> <Greek_eta> : "á¼£" U1f23
+<dead_ogonek> <dead_grave> <Greek_eta> : "á¼£" U1f23
+<dead_grave> <dead_ogonek> <Greek_eta> : "á¼£" U1f23
+<Multi_key> <greater> <apostrophe> <Greek_eta> : "ἤ" U1f24
+<Multi_key> <apostrophe> <greater> <Greek_eta> : "ἤ" U1f24
+<dead_horn> <dead_acute> <Greek_eta> : "ἤ" U1f24
+<dead_acute> <dead_horn> <Greek_eta> : "ἤ" U1f24
+<Multi_key> <less> <apostrophe> <Greek_eta> : "á¼¥" U1f25
+<Multi_key> <apostrophe> <less> <Greek_eta> : "á¼¥" U1f25
+<dead_ogonek> <dead_acute> <Greek_eta> : "á¼¥" U1f25
+<dead_acute> <dead_ogonek> <Greek_eta> : "á¼¥" U1f25
+<Multi_key> <greater> <asciitilde> <Greek_eta> : "ἦ" U1f26
+<Multi_key> <asciitilde> <greater> <Greek_eta> : "ἦ" U1f26
+<dead_horn> <dead_tilde> <Greek_eta> : "ἦ" U1f26
+<dead_tilde> <dead_horn> <Greek_eta> : "ἦ" U1f26
+<Multi_key> <less> <asciitilde> <Greek_eta> : "ἧ" U1f27
+<Multi_key> <asciitilde> <less> <Greek_eta> : "ἧ" U1f27
+<dead_ogonek> <dead_tilde> <Greek_eta> : "ἧ" U1f27
+<dead_tilde> <dead_ogonek> <Greek_eta> : "ἧ" U1f27
+<Multi_key> <greater> <Greek_ETA> : "Ἠ" U1f28
+<dead_horn> <Greek_ETA> : "Ἠ" U1f28
+<Multi_key> <less> <Greek_ETA> : "Ἡ" U1f29
+<dead_ogonek> <Greek_ETA> : "Ἡ" U1f29
+<Multi_key> <greater> <grave> <Greek_ETA> : "Ἢ" U1f2a
+<Multi_key> <grave> <greater> <Greek_ETA> : "Ἢ" U1f2a
+<dead_horn> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
+<dead_grave> <dead_horn> <Greek_ETA> : "Ἢ" U1f2a
+<Multi_key> <less> <grave> <Greek_ETA> : "Ἣ" U1f2b
+<Multi_key> <grave> <less> <Greek_ETA> : "Ἣ" U1f2b
+<dead_ogonek> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
+<dead_grave> <dead_ogonek> <Greek_ETA> : "Ἣ" U1f2b
+<Multi_key> <greater> <apostrophe> <Greek_ETA> : "Ἤ" U1f2c
+<Multi_key> <apostrophe> <greater> <Greek_ETA> : "Ἤ" U1f2c
+<dead_horn> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
+<dead_acute> <dead_horn> <Greek_ETA> : "Ἤ" U1f2c
+<Multi_key> <less> <apostrophe> <Greek_ETA> : "á¼­" U1f2d
+<Multi_key> <apostrophe> <less> <Greek_ETA> : "á¼­" U1f2d
+<dead_ogonek> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
+<dead_acute> <dead_ogonek> <Greek_ETA> : "á¼­" U1f2d
+<Multi_key> <greater> <asciitilde> <Greek_ETA> : "á¼®" U1f2e
+<Multi_key> <asciitilde> <greater> <Greek_ETA> : "á¼®" U1f2e
+<dead_horn> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
+<dead_tilde> <dead_horn> <Greek_ETA> : "á¼®" U1f2e
+<Multi_key> <less> <asciitilde> <Greek_ETA> : "Ἧ" U1f2f
+<Multi_key> <asciitilde> <less> <Greek_ETA> : "Ἧ" U1f2f
+<dead_ogonek> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
+<dead_tilde> <dead_ogonek> <Greek_ETA> : "Ἧ" U1f2f
+<Multi_key> <greater> <Greek_iota> : "á¼°" U1f30
+<dead_horn> <Greek_iota> : "á¼°" U1f30
+<Multi_key> <less> <Greek_iota> : "á¼±" U1f31
+<dead_ogonek> <Greek_iota> : "á¼±" U1f31
+<Multi_key> <greater> <grave> <Greek_iota> : "á¼²" U1f32
+<Multi_key> <grave> <greater> <Greek_iota> : "á¼²" U1f32
+<dead_horn> <dead_grave> <Greek_iota> : "á¼²" U1f32
+<dead_grave> <dead_horn> <Greek_iota> : "á¼²" U1f32
+<Multi_key> <less> <grave> <Greek_iota> : "á¼³" U1f33
+<Multi_key> <grave> <less> <Greek_iota> : "á¼³" U1f33
+<dead_ogonek> <dead_grave> <Greek_iota> : "á¼³" U1f33
+<dead_grave> <dead_ogonek> <Greek_iota> : "á¼³" U1f33
+<Multi_key> <greater> <apostrophe> <Greek_iota> : "á¼´" U1f34
+<Multi_key> <apostrophe> <greater> <Greek_iota> : "á¼´" U1f34
+<dead_horn> <dead_acute> <Greek_iota> : "á¼´" U1f34
+<dead_acute> <dead_horn> <Greek_iota> : "á¼´" U1f34
+<Multi_key> <less> <apostrophe> <Greek_iota> : "á¼µ" U1f35
+<Multi_key> <apostrophe> <less> <Greek_iota> : "á¼µ" U1f35
+<dead_ogonek> <dead_acute> <Greek_iota> : "á¼µ" U1f35
+<dead_acute> <dead_ogonek> <Greek_iota> : "á¼µ" U1f35
+<Multi_key> <greater> <asciitilde> <Greek_iota> : "ἶ" U1f36
+<Multi_key> <asciitilde> <greater> <Greek_iota> : "ἶ" U1f36
+<dead_horn> <dead_tilde> <Greek_iota> : "ἶ" U1f36
+<dead_tilde> <dead_horn> <Greek_iota> : "ἶ" U1f36
+<Multi_key> <less> <asciitilde> <Greek_iota> : "á¼·" U1f37
+<Multi_key> <asciitilde> <less> <Greek_iota> : "á¼·" U1f37
+<dead_ogonek> <dead_tilde> <Greek_iota> : "á¼·" U1f37
+<dead_tilde> <dead_ogonek> <Greek_iota> : "á¼·" U1f37
+<Multi_key> <greater> <Greek_IOTA> : "Ἰ" U1f38
+<dead_horn> <Greek_IOTA> : "Ἰ" U1f38
+<Multi_key> <less> <Greek_IOTA> : "á¼¹" U1f39
+<dead_ogonek> <Greek_IOTA> : "á¼¹" U1f39
+<Multi_key> <greater> <grave> <Greek_IOTA> : "Ἲ" U1f3a
+<Multi_key> <grave> <greater> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_horn> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_grave> <dead_horn> <Greek_IOTA> : "Ἲ" U1f3a
+<Multi_key> <less> <grave> <Greek_IOTA> : "á¼»" U1f3b
+<Multi_key> <grave> <less> <Greek_IOTA> : "á¼»" U1f3b
+<dead_ogonek> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
+<dead_grave> <dead_ogonek> <Greek_IOTA> : "á¼»" U1f3b
+<Multi_key> <greater> <apostrophe> <Greek_IOTA> : "á¼¼" U1f3c
+<Multi_key> <apostrophe> <greater> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_horn> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_acute> <dead_horn> <Greek_IOTA> : "á¼¼" U1f3c
+<Multi_key> <less> <apostrophe> <Greek_IOTA> : "á¼½" U1f3d
+<Multi_key> <apostrophe> <less> <Greek_IOTA> : "á¼½" U1f3d
+<dead_ogonek> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
+<dead_acute> <dead_ogonek> <Greek_IOTA> : "á¼½" U1f3d
+<Multi_key> <greater> <asciitilde> <Greek_IOTA> : "á¼¾" U1f3e
+<Multi_key> <asciitilde> <greater> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_horn> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_tilde> <dead_horn> <Greek_IOTA> : "á¼¾" U1f3e
+<Multi_key> <less> <asciitilde> <Greek_IOTA> : "Ἷ" U1f3f
+<Multi_key> <asciitilde> <less> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_ogonek> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_tilde> <dead_ogonek> <Greek_IOTA> : "Ἷ" U1f3f
+<Multi_key> <greater> <Greek_omicron> : "á½€" U1f40
+<dead_horn> <Greek_omicron> : "á½€" U1f40
+<Multi_key> <less> <Greek_omicron> : "á½" U1f41
+<dead_ogonek> <Greek_omicron> : "á½" U1f41
+<Multi_key> <greater> <grave> <Greek_omicron> : "ὂ" U1f42
+<Multi_key> <grave> <greater> <Greek_omicron> : "ὂ" U1f42
+<dead_horn> <dead_grave> <Greek_omicron> : "ὂ" U1f42
+<dead_grave> <dead_horn> <Greek_omicron> : "ὂ" U1f42
+<Multi_key> <less> <grave> <Greek_omicron> : "ὃ" U1f43
+<Multi_key> <grave> <less> <Greek_omicron> : "ὃ" U1f43
+<dead_ogonek> <dead_grave> <Greek_omicron> : "ὃ" U1f43
+<dead_grave> <dead_ogonek> <Greek_omicron> : "ὃ" U1f43
+<Multi_key> <greater> <apostrophe> <Greek_omicron> : "ὄ" U1f44
+<Multi_key> <apostrophe> <greater> <Greek_omicron> : "ὄ" U1f44
+<dead_horn> <dead_acute> <Greek_omicron> : "ὄ" U1f44
+<dead_acute> <dead_horn> <Greek_omicron> : "ὄ" U1f44
+<Multi_key> <less> <apostrophe> <Greek_omicron> : "á½…" U1f45
+<Multi_key> <apostrophe> <less> <Greek_omicron> : "á½…" U1f45
+<dead_ogonek> <dead_acute> <Greek_omicron> : "á½…" U1f45
+<dead_acute> <dead_ogonek> <Greek_omicron> : "á½…" U1f45
+<Multi_key> <greater> <Greek_OMICRON> : "Ὀ" U1f48
+<dead_horn> <Greek_OMICRON> : "Ὀ" U1f48
+<Multi_key> <less> <Greek_OMICRON> : "Ὁ" U1f49
+<dead_ogonek> <Greek_OMICRON> : "Ὁ" U1f49
+<Multi_key> <greater> <grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<Multi_key> <grave> <greater> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_horn> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_grave> <dead_horn> <Greek_OMICRON> : "Ὂ" U1f4a
+<Multi_key> <less> <grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<Multi_key> <grave> <less> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_ogonek> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_grave> <dead_ogonek> <Greek_OMICRON> : "Ὃ" U1f4b
+<Multi_key> <greater> <apostrophe> <Greek_OMICRON> : "Ὄ" U1f4c
+<Multi_key> <apostrophe> <greater> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_horn> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_acute> <dead_horn> <Greek_OMICRON> : "Ὄ" U1f4c
+<Multi_key> <less> <apostrophe> <Greek_OMICRON> : "á½" U1f4d
+<Multi_key> <apostrophe> <less> <Greek_OMICRON> : "á½" U1f4d
+<dead_ogonek> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
+<dead_acute> <dead_ogonek> <Greek_OMICRON> : "á½" U1f4d
+<Multi_key> <greater> <Greek_upsilon> : "á½" U1f50
+<dead_horn> <Greek_upsilon> : "á½" U1f50
+<Multi_key> <less> <Greek_upsilon> : "ὑ" U1f51
+<dead_ogonek> <Greek_upsilon> : "ὑ" U1f51
+<Multi_key> <greater> <grave> <Greek_upsilon> : "á½’" U1f52
+<Multi_key> <grave> <greater> <Greek_upsilon> : "á½’" U1f52
+<dead_horn> <dead_grave> <Greek_upsilon> : "á½’" U1f52
+<dead_grave> <dead_horn> <Greek_upsilon> : "á½’" U1f52
+<Multi_key> <less> <grave> <Greek_upsilon> : "ὓ" U1f53
+<Multi_key> <grave> <less> <Greek_upsilon> : "ὓ" U1f53
+<dead_ogonek> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
+<dead_grave> <dead_ogonek> <Greek_upsilon> : "ὓ" U1f53
+<Multi_key> <greater> <apostrophe> <Greek_upsilon> : "á½”" U1f54
+<Multi_key> <apostrophe> <greater> <Greek_upsilon> : "á½”" U1f54
+<dead_horn> <dead_acute> <Greek_upsilon> : "á½”" U1f54
+<dead_acute> <dead_horn> <Greek_upsilon> : "á½”" U1f54
+<Multi_key> <less> <apostrophe> <Greek_upsilon> : "ὕ" U1f55
+<Multi_key> <apostrophe> <less> <Greek_upsilon> : "ὕ" U1f55
+<dead_ogonek> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
+<dead_acute> <dead_ogonek> <Greek_upsilon> : "ὕ" U1f55
+<Multi_key> <greater> <asciitilde> <Greek_upsilon> : "á½–" U1f56
+<Multi_key> <asciitilde> <greater> <Greek_upsilon> : "á½–" U1f56
+<dead_horn> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
+<dead_tilde> <dead_horn> <Greek_upsilon> : "á½–" U1f56
+<Multi_key> <less> <asciitilde> <Greek_upsilon> : "á½—" U1f57
+<Multi_key> <asciitilde> <less> <Greek_upsilon> : "á½—" U1f57
+<dead_ogonek> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
+<dead_tilde> <dead_ogonek> <Greek_upsilon> : "á½—" U1f57
+<Multi_key> <less> <Greek_UPSILON> : "á½™" U1f59
+<dead_ogonek> <Greek_UPSILON> : "á½™" U1f59
+<Multi_key> <less> <grave> <Greek_UPSILON> : "á½›" U1f5b
+<Multi_key> <grave> <less> <Greek_UPSILON> : "á½›" U1f5b
+<dead_ogonek> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
+<dead_grave> <dead_ogonek> <Greek_UPSILON> : "á½›" U1f5b
+<Multi_key> <less> <apostrophe> <Greek_UPSILON> : "á½" U1f5d
+<Multi_key> <apostrophe> <less> <Greek_UPSILON> : "á½" U1f5d
+<dead_ogonek> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
+<dead_acute> <dead_ogonek> <Greek_UPSILON> : "á½" U1f5d
+<Multi_key> <less> <asciitilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<Multi_key> <asciitilde> <less> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_ogonek> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_tilde> <dead_ogonek> <Greek_UPSILON> : "Ὗ" U1f5f
+<Multi_key> <greater> <Greek_omega> : "á½ " U1f60
+<dead_horn> <Greek_omega> : "á½ " U1f60
+<Multi_key> <less> <Greek_omega> : "ὡ" U1f61
+<dead_ogonek> <Greek_omega> : "ὡ" U1f61
+<Multi_key> <greater> <grave> <Greek_omega> : "á½¢" U1f62
+<Multi_key> <grave> <greater> <Greek_omega> : "á½¢" U1f62
+<dead_horn> <dead_grave> <Greek_omega> : "á½¢" U1f62
+<dead_grave> <dead_horn> <Greek_omega> : "á½¢" U1f62
+<Multi_key> <less> <grave> <Greek_omega> : "á½£" U1f63
+<Multi_key> <grave> <less> <Greek_omega> : "á½£" U1f63
+<dead_ogonek> <dead_grave> <Greek_omega> : "á½£" U1f63
+<dead_grave> <dead_ogonek> <Greek_omega> : "á½£" U1f63
+<Multi_key> <greater> <apostrophe> <Greek_omega> : "ὤ" U1f64
+<Multi_key> <apostrophe> <greater> <Greek_omega> : "ὤ" U1f64
+<dead_horn> <dead_acute> <Greek_omega> : "ὤ" U1f64
+<dead_acute> <dead_horn> <Greek_omega> : "ὤ" U1f64
+<Multi_key> <less> <apostrophe> <Greek_omega> : "á½¥" U1f65
+<Multi_key> <apostrophe> <less> <Greek_omega> : "á½¥" U1f65
+<dead_ogonek> <dead_acute> <Greek_omega> : "á½¥" U1f65
+<dead_acute> <dead_ogonek> <Greek_omega> : "á½¥" U1f65
+<Multi_key> <greater> <asciitilde> <Greek_omega> : "ὦ" U1f66
+<Multi_key> <asciitilde> <greater> <Greek_omega> : "ὦ" U1f66
+<dead_horn> <dead_tilde> <Greek_omega> : "ὦ" U1f66
+<dead_tilde> <dead_horn> <Greek_omega> : "ὦ" U1f66
+<Multi_key> <less> <asciitilde> <Greek_omega> : "ὧ" U1f67
+<Multi_key> <asciitilde> <less> <Greek_omega> : "ὧ" U1f67
+<dead_ogonek> <dead_tilde> <Greek_omega> : "ὧ" U1f67
+<dead_tilde> <dead_ogonek> <Greek_omega> : "ὧ" U1f67
+<Multi_key> <greater> <Greek_OMEGA> : "Ὠ" U1f68
+<dead_horn> <Greek_OMEGA> : "Ὠ" U1f68
+<Multi_key> <less> <Greek_OMEGA> : "Ὡ" U1f69
+<dead_ogonek> <Greek_OMEGA> : "Ὡ" U1f69
+<Multi_key> <greater> <grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<Multi_key> <grave> <greater> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_horn> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_grave> <dead_horn> <Greek_OMEGA> : "Ὢ" U1f6a
+<Multi_key> <less> <grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<Multi_key> <grave> <less> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_ogonek> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_grave> <dead_ogonek> <Greek_OMEGA> : "Ὣ" U1f6b
+<Multi_key> <greater> <apostrophe> <Greek_OMEGA> : "Ὤ" U1f6c
+<Multi_key> <apostrophe> <greater> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_horn> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_acute> <dead_horn> <Greek_OMEGA> : "Ὤ" U1f6c
+<Multi_key> <less> <apostrophe> <Greek_OMEGA> : "á½­" U1f6d
+<Multi_key> <apostrophe> <less> <Greek_OMEGA> : "á½­" U1f6d
+<dead_ogonek> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
+<dead_acute> <dead_ogonek> <Greek_OMEGA> : "á½­" U1f6d
+<Multi_key> <greater> <asciitilde> <Greek_OMEGA> : "á½®" U1f6e
+<Multi_key> <asciitilde> <greater> <Greek_OMEGA> : "á½®" U1f6e
+<dead_horn> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
+<dead_tilde> <dead_horn> <Greek_OMEGA> : "á½®" U1f6e
+<Multi_key> <less> <asciitilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<Multi_key> <asciitilde> <less> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_ogonek> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_tilde> <dead_ogonek> <Greek_OMEGA> : "Ὧ" U1f6f
+<Multi_key> <grave> <Greek_alpha> : "á½°" U1f70
+<dead_grave> <Greek_alpha> : "á½°" U1f70
+<Multi_key> <apostrophe> <Greek_alpha> : "á½±" U1f71
+<dead_acute> <Greek_alpha> : "á½±" U1f71
+<Multi_key> <grave> <Greek_epsilon> : "á½²" U1f72
+<dead_grave> <Greek_epsilon> : "á½²" U1f72
+<Multi_key> <apostrophe> <Greek_epsilon> : "á½³" U1f73
+<dead_acute> <Greek_epsilon> : "á½³" U1f73
+<Multi_key> <grave> <Greek_eta> : "á½´" U1f74
+<dead_grave> <Greek_eta> : "á½´" U1f74
+<Multi_key> <apostrophe> <Greek_eta> : "á½µ" U1f75
+<dead_acute> <Greek_eta> : "á½µ" U1f75
+<Multi_key> <grave> <Greek_iota> : "ὶ" U1f76
+<dead_grave> <Greek_iota> : "ὶ" U1f76
+<Multi_key> <apostrophe> <Greek_iota> : "á½·" U1f77
+<dead_acute> <Greek_iota> : "á½·" U1f77
+<Multi_key> <grave> <Greek_omicron> : "ὸ" U1f78
+<dead_grave> <Greek_omicron> : "ὸ" U1f78
+<Multi_key> <apostrophe> <Greek_omicron> : "á½¹" U1f79
+<dead_acute> <Greek_omicron> : "á½¹" U1f79
+<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1f7a
+<dead_grave> <Greek_upsilon> : "ὺ" U1f7a
+<Multi_key> <apostrophe> <Greek_upsilon> : "á½»" U1f7b
+<dead_acute> <Greek_upsilon> : "á½»" U1f7b
+<Multi_key> <grave> <Greek_omega> : "á½¼" U1f7c
+<dead_grave> <Greek_omega> : "á½¼" U1f7c
+<Multi_key> <apostrophe> <Greek_omega> : "á½½" U1f7d
+<dead_acute> <Greek_omega> : "á½½" U1f7d
+<Multi_key> <bar> <greater> <Greek_alpha> : "á¾€" U1f80
+<Multi_key> <greater> <bar> <Greek_alpha> : "á¾€" U1f80
+<dead_iota> <dead_horn> <Greek_alpha> : "á¾€" U1f80
+<dead_horn> <dead_iota> <Greek_alpha> : "á¾€" U1f80
+<Multi_key> <bar> <less> <Greek_alpha> : "á¾" U1f81
+<Multi_key> <less> <bar> <Greek_alpha> : "á¾" U1f81
+<dead_iota> <dead_ogonek> <Greek_alpha> : "á¾" U1f81
+<dead_ogonek> <dead_iota> <Greek_alpha> : "á¾" U1f81
+<Multi_key> <bar> <greater> <grave> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <bar> <grave> <greater> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <greater> <bar> <grave> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <greater> <grave> <bar> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <grave> <bar> <greater> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <grave> <greater> <bar> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_horn> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_grave> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
+<dead_horn> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_horn> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_iota> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_horn> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <bar> <less> <grave> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <bar> <grave> <less> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <less> <bar> <grave> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <less> <grave> <bar> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <grave> <bar> <less> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <grave> <less> <bar> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <bar> <greater> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <bar> <apostrophe> <greater> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <greater> <bar> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <greater> <apostrophe> <bar> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <apostrophe> <bar> <greater> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <apostrophe> <greater> <bar> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_horn> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_acute> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
+<dead_horn> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_horn> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_iota> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_horn> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <bar> <less> <apostrophe> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <bar> <apostrophe> <less> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <less> <bar> <apostrophe> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <less> <apostrophe> <bar> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <apostrophe> <bar> <less> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <apostrophe> <less> <bar> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <bar> <greater> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <bar> <asciitilde> <greater> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <greater> <bar> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <greater> <asciitilde> <bar> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <asciitilde> <bar> <greater> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <asciitilde> <greater> <bar> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_horn> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_tilde> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
+<dead_horn> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_horn> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_iota> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_horn> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <bar> <less> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <bar> <asciitilde> <less> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <less> <bar> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <less> <asciitilde> <bar> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <asciitilde> <bar> <less> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <asciitilde> <less> <bar> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <bar> <greater> <Greek_ALPHA> : "ᾈ" U1f88
+<Multi_key> <greater> <bar> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_iota> <dead_horn> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_horn> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
+<Multi_key> <bar> <less> <Greek_ALPHA> : "ᾉ" U1f89
+<Multi_key> <less> <bar> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
+<Multi_key> <bar> <greater> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <bar> <grave> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <greater> <bar> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <greater> <grave> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <grave> <bar> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <grave> <greater> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_horn> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_grave> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_horn> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_horn> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <bar> <less> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <bar> <grave> <less> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <less> <bar> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <less> <grave> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <grave> <bar> <less> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <grave> <less> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <bar> <greater> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <bar> <apostrophe> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <greater> <bar> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <greater> <apostrophe> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <apostrophe> <bar> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <apostrophe> <greater> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_horn> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_acute> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_horn> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_horn> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <bar> <less> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <bar> <apostrophe> <less> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <less> <bar> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <less> <apostrophe> <bar> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <apostrophe> <bar> <less> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <apostrophe> <less> <bar> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <bar> <greater> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <bar> <asciitilde> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <greater> <bar> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <greater> <asciitilde> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <asciitilde> <bar> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <asciitilde> <greater> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_horn> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_tilde> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_horn> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_horn> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <bar> <less> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <bar> <asciitilde> <less> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <less> <bar> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <less> <asciitilde> <bar> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <asciitilde> <bar> <less> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <asciitilde> <less> <bar> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <bar> <greater> <Greek_eta> : "á¾" U1f90
+<Multi_key> <greater> <bar> <Greek_eta> : "á¾" U1f90
+<dead_iota> <dead_horn> <Greek_eta> : "á¾" U1f90
+<dead_horn> <dead_iota> <Greek_eta> : "á¾" U1f90
+<Multi_key> <bar> <less> <Greek_eta> : "ᾑ" U1f91
+<Multi_key> <less> <bar> <Greek_eta> : "ᾑ" U1f91
+<dead_iota> <dead_ogonek> <Greek_eta> : "ᾑ" U1f91
+<dead_ogonek> <dead_iota> <Greek_eta> : "ᾑ" U1f91
+<Multi_key> <bar> <greater> <grave> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <bar> <grave> <greater> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <greater> <bar> <grave> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <greater> <grave> <bar> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <grave> <bar> <greater> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <grave> <greater> <bar> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_horn> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_grave> <dead_horn> <Greek_eta> : "á¾’" U1f92
+<dead_horn> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_horn> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_iota> <dead_horn> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_horn> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <bar> <less> <grave> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <bar> <grave> <less> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <less> <bar> <grave> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <less> <grave> <bar> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <grave> <bar> <less> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <grave> <less> <bar> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <bar> <greater> <apostrophe> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <bar> <apostrophe> <greater> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <greater> <bar> <apostrophe> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <greater> <apostrophe> <bar> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <apostrophe> <bar> <greater> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <apostrophe> <greater> <bar> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_horn> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_acute> <dead_horn> <Greek_eta> : "á¾”" U1f94
+<dead_horn> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_horn> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_iota> <dead_horn> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_horn> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <bar> <less> <apostrophe> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <bar> <apostrophe> <less> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <less> <bar> <apostrophe> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <less> <apostrophe> <bar> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <apostrophe> <bar> <less> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <apostrophe> <less> <bar> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <bar> <greater> <asciitilde> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <bar> <asciitilde> <greater> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <greater> <bar> <asciitilde> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <greater> <asciitilde> <bar> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <asciitilde> <bar> <greater> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <asciitilde> <greater> <bar> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_horn> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_tilde> <dead_horn> <Greek_eta> : "á¾–" U1f96
+<dead_horn> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_horn> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_iota> <dead_horn> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_horn> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <bar> <less> <asciitilde> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <bar> <asciitilde> <less> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <less> <bar> <asciitilde> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <less> <asciitilde> <bar> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <asciitilde> <bar> <less> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <asciitilde> <less> <bar> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <bar> <greater> <Greek_ETA> : "ᾘ" U1f98
+<Multi_key> <greater> <bar> <Greek_ETA> : "ᾘ" U1f98
+<dead_iota> <dead_horn> <Greek_ETA> : "ᾘ" U1f98
+<dead_horn> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
+<Multi_key> <bar> <less> <Greek_ETA> : "á¾™" U1f99
+<Multi_key> <less> <bar> <Greek_ETA> : "á¾™" U1f99
+<dead_iota> <dead_ogonek> <Greek_ETA> : "á¾™" U1f99
+<dead_ogonek> <dead_iota> <Greek_ETA> : "á¾™" U1f99
+<Multi_key> <bar> <greater> <grave> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <bar> <grave> <greater> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <greater> <bar> <grave> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <greater> <grave> <bar> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <grave> <bar> <greater> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <grave> <greater> <bar> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_horn> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_grave> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
+<dead_horn> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_horn> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_iota> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_horn> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <bar> <less> <grave> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <bar> <grave> <less> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <less> <bar> <grave> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <less> <grave> <bar> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <grave> <bar> <less> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <grave> <less> <bar> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <bar> <greater> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <bar> <apostrophe> <greater> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <greater> <bar> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <greater> <apostrophe> <bar> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <apostrophe> <bar> <greater> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <apostrophe> <greater> <bar> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_horn> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_acute> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
+<dead_horn> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_horn> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_iota> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_horn> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <bar> <less> <apostrophe> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <bar> <apostrophe> <less> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <less> <bar> <apostrophe> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <less> <apostrophe> <bar> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <apostrophe> <bar> <less> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <apostrophe> <less> <bar> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <bar> <greater> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <bar> <asciitilde> <greater> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <greater> <bar> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <greater> <asciitilde> <bar> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <asciitilde> <bar> <greater> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <asciitilde> <greater> <bar> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_horn> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_tilde> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
+<dead_horn> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_horn> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_iota> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_horn> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <bar> <less> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <bar> <asciitilde> <less> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <less> <bar> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <less> <asciitilde> <bar> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <asciitilde> <bar> <less> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <asciitilde> <less> <bar> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <bar> <greater> <Greek_omega> : "á¾ " U1fa0
+<Multi_key> <greater> <bar> <Greek_omega> : "á¾ " U1fa0
+<dead_iota> <dead_horn> <Greek_omega> : "á¾ " U1fa0
+<dead_horn> <dead_iota> <Greek_omega> : "á¾ " U1fa0
+<Multi_key> <bar> <less> <Greek_omega> : "ᾡ" U1fa1
+<Multi_key> <less> <bar> <Greek_omega> : "ᾡ" U1fa1
+<dead_iota> <dead_ogonek> <Greek_omega> : "ᾡ" U1fa1
+<dead_ogonek> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
+<Multi_key> <bar> <greater> <grave> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <bar> <grave> <greater> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <greater> <bar> <grave> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <greater> <grave> <bar> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <grave> <bar> <greater> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <grave> <greater> <bar> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_horn> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_grave> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
+<dead_horn> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_horn> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_iota> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_horn> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <bar> <less> <grave> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <bar> <grave> <less> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <less> <bar> <grave> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <less> <grave> <bar> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <grave> <bar> <less> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <grave> <less> <bar> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <bar> <greater> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <bar> <apostrophe> <greater> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <greater> <bar> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <greater> <apostrophe> <bar> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <apostrophe> <bar> <greater> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <apostrophe> <greater> <bar> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_horn> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_acute> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
+<dead_horn> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_horn> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_iota> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_horn> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <bar> <less> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <bar> <apostrophe> <less> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <less> <bar> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <less> <apostrophe> <bar> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <apostrophe> <bar> <less> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <apostrophe> <less> <bar> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <bar> <greater> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <bar> <asciitilde> <greater> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <greater> <bar> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <greater> <asciitilde> <bar> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <asciitilde> <bar> <greater> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <asciitilde> <greater> <bar> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_horn> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_tilde> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
+<dead_horn> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_horn> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_iota> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_horn> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <bar> <less> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <bar> <asciitilde> <less> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <less> <bar> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <less> <asciitilde> <bar> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <asciitilde> <bar> <less> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <asciitilde> <less> <bar> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <bar> <greater> <Greek_OMEGA> : "ᾨ" U1fa8
+<Multi_key> <greater> <bar> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_iota> <dead_horn> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_horn> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
+<Multi_key> <bar> <less> <Greek_OMEGA> : "ᾩ" U1fa9
+<Multi_key> <less> <bar> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
+<Multi_key> <bar> <greater> <grave> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <bar> <grave> <greater> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <greater> <bar> <grave> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <greater> <grave> <bar> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <grave> <bar> <greater> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <grave> <greater> <bar> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_horn> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_grave> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_horn> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_horn> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <bar> <less> <grave> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <bar> <grave> <less> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <less> <bar> <grave> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <less> <grave> <bar> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <grave> <bar> <less> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <grave> <less> <bar> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <bar> <greater> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <bar> <apostrophe> <greater> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <greater> <bar> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <greater> <apostrophe> <bar> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <apostrophe> <bar> <greater> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <apostrophe> <greater> <bar> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_horn> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_acute> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_horn> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_horn> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <bar> <less> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <bar> <apostrophe> <less> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <less> <bar> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <less> <apostrophe> <bar> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <apostrophe> <bar> <less> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <apostrophe> <less> <bar> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <bar> <greater> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <bar> <asciitilde> <greater> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <greater> <bar> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <greater> <asciitilde> <bar> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <asciitilde> <bar> <greater> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <asciitilde> <greater> <bar> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_horn> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_tilde> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
+<dead_horn> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_horn> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_iota> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_horn> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <bar> <less> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <bar> <asciitilde> <less> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <less> <bar> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <less> <asciitilde> <bar> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <asciitilde> <bar> <less> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <asciitilde> <less> <bar> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_breve> <Greek_alpha> : "á¾°" U1fb0
+<dead_macron> <Greek_alpha> : "á¾±" U1fb1
+<dead_breve> <Greek_ALPHA> : "Ᾰ" U1fb8
+<dead_macron> <Greek_ALPHA> : "á¾¹" U1fb9
+<dead_breve> <Greek_iota> : "á¿" U1fd0
+<dead_macron> <Greek_iota> : "á¿‘" U1fd1
+<dead_breve> <Greek_IOTA> : "Ῐ" U1fd8
+<dead_macron> <Greek_IOTA> : "á¿™" U1fd9
+<dead_breve> <Greek_upsilon> : "á¿ " U1fe0
+<dead_macron> <Greek_upsilon> : "á¿¡" U1fe1
+<dead_breve> <Greek_UPSILON> : "Ῠ" U1fe8
+<dead_macron> <Greek_UPSILON> : "á¿©" U1fe9
+<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1fba
+<dead_grave> <Greek_ALPHA> : "Ὰ" U1fba
+<Multi_key> <apostrophe> <Greek_ALPHA> : "á¾»" U1fbb
+<dead_acute> <Greek_ALPHA> : "á¾»" U1fbb
+<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1fc8
+<dead_grave> <Greek_EPSILON> : "Ὲ" U1fc8
+<Multi_key> <apostrophe> <Greek_EPSILON> : "Έ" U1fc9
+<dead_acute> <Greek_EPSILON> : "Έ" U1fc9
+<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1fca
+<dead_grave> <Greek_ETA> : "á¿Š" U1fca
+<Multi_key> <apostrophe> <Greek_ETA> : "á¿‹" U1fcb
+<dead_acute> <Greek_ETA> : "á¿‹" U1fcb
+<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1fda
+<dead_grave> <Greek_IOTA> : "á¿š" U1fda
+<Multi_key> <apostrophe> <Greek_IOTA> : "á¿›" U1fdb
+<dead_acute> <Greek_IOTA> : "á¿›" U1fdb
+<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1fea
+<dead_grave> <Greek_UPSILON> : "Ὺ" U1fea
+<Multi_key> <apostrophe> <Greek_UPSILON> : "á¿«" U1feb
+<dead_acute> <Greek_UPSILON> : "á¿«" U1feb
+<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1ff8
+<dead_grave> <Greek_OMICRON> : "Ὸ" U1ff8
+<Multi_key> <apostrophe> <Greek_OMICRON> : "Ό" U1ff9
+<dead_acute> <Greek_OMICRON> : "Ό" U1ff9
+<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1ffa
+<dead_grave> <Greek_OMEGA> : "Ὼ" U1ffa
+<Multi_key> <apostrophe> <Greek_OMEGA> : "á¿»" U1ffb
+<dead_acute> <Greek_OMEGA> : "á¿»" U1ffb
+<Multi_key> <bar> <grave> <Greek_alpha> : "á¾²" U1fb2
+<Multi_key> <grave> <bar> <Greek_alpha> : "á¾²" U1fb2
+<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1fb2
+<dead_grave> <dead_iota> <Greek_alpha> : "á¾²" U1fb2
+<Multi_key> <bar> <Greek_alpha> : "á¾³" U1fb3
+<dead_iota> <Greek_alpha> : "á¾³" U1fb3
+<Multi_key> <bar> <apostrophe> <Greek_alpha> : "á¾´" U1fb4
+<Multi_key> <apostrophe> <bar> <Greek_alpha> : "á¾´" U1fb4
+<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1fb4
+<dead_acute> <dead_iota> <Greek_alpha> : "á¾´" U1fb4
+<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1fb6
+<dead_tilde> <Greek_alpha> : "ᾶ" U1fb6
+<Multi_key> <bar> <asciitilde> <Greek_alpha> : "á¾·" U1fb7
+<Multi_key> <asciitilde> <bar> <Greek_alpha> : "á¾·" U1fb7
+<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1fb7
+<dead_tilde> <dead_iota> <Greek_alpha> : "á¾·" U1fb7
+<Multi_key> <bar> <grave> <Greek_eta> : "á¿‚" U1fc2
+<Multi_key> <grave> <bar> <Greek_eta> : "á¿‚" U1fc2
+<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1fc2
+<dead_grave> <dead_iota> <Greek_eta> : "á¿‚" U1fc2
+<Multi_key> <bar> <Greek_eta> : "ῃ" U1fc3
+<dead_iota> <Greek_eta> : "ῃ" U1fc3
+<Multi_key> <bar> <apostrophe> <Greek_eta> : "á¿„" U1fc4
+<Multi_key> <apostrophe> <bar> <Greek_eta> : "á¿„" U1fc4
+<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1fc4
+<dead_acute> <dead_iota> <Greek_eta> : "á¿„" U1fc4
+<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1fc6
+<dead_tilde> <Greek_eta> : "ῆ" U1fc6
+<Multi_key> <bar> <asciitilde> <Greek_eta> : "ῇ" U1fc7
+<Multi_key> <asciitilde> <bar> <Greek_eta> : "ῇ" U1fc7
+<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1fc7
+<dead_tilde> <dead_iota> <Greek_eta> : "ῇ" U1fc7
+<Multi_key> <quotedbl> <grave> <Greek_iota> : "á¿’" U1fd2
+<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1fd2
+<dead_diaeresis> <dead_grave> <Greek_iota> : "á¿’" U1fd2
+<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1fd2
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "á¿“" U1fd3
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "á¿“" U1fd3
+<dead_diaeresis> <dead_acute> <Greek_iota> : "á¿“" U1fd3
+<dead_acute> <dead_diaeresis> <Greek_iota> : "á¿“" U1fd3
+<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1fd6
+<dead_tilde> <Greek_iota> : "á¿–" U1fd6
+<Multi_key> <quotedbl> <asciitilde> <Greek_iota> : "á¿—" U1fd7
+<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1fd7
+<dead_diaeresis> <dead_tilde> <Greek_iota> : "á¿—" U1fd7
+<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1fd7
+<Multi_key> <quotedbl> <grave> <Greek_upsilon> : "á¿¢" U1fe2
+<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1fe2
+<dead_diaeresis> <dead_grave> <Greek_upsilon> : "á¿¢" U1fe2
+<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1fe2
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "á¿£" U1fe3
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "á¿£" U1fe3
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "á¿£" U1fe3
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "á¿£" U1fe3
+<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1fe6
+<dead_tilde> <Greek_upsilon> : "ῦ" U1fe6
+<Multi_key> <quotedbl> <asciitilde> <Greek_upsilon> : "ῧ" U1fe7
+<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1fe7
+<dead_diaeresis> <dead_tilde> <Greek_upsilon> : "ῧ" U1fe7
+<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1fe7
+<Multi_key> <bar> <grave> <Greek_omega> : "ῲ" U1ff2
+<Multi_key> <grave> <bar> <Greek_omega> : "ῲ" U1ff2
+<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1ff2
+<dead_grave> <dead_iota> <Greek_omega> : "ῲ" U1ff2
+<Multi_key> <bar> <Greek_omega> : "ῳ" U1ff3
+<dead_iota> <Greek_omega> : "ῳ" U1ff3
+<Multi_key> <bar> <apostrophe> <Greek_omega> : "á¿´" U1ff4
+<Multi_key> <apostrophe> <bar> <Greek_omega> : "á¿´" U1ff4
+<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1ff4
+<dead_acute> <dead_iota> <Greek_omega> : "á¿´" U1ff4
+<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1ff6
+<dead_tilde> <Greek_omega> : "ῶ" U1ff6
+<Multi_key> <bar> <asciitilde> <Greek_omega> : "á¿·" U1ff7
+<Multi_key> <asciitilde> <bar> <Greek_omega> : "á¿·" U1ff7
+<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1ff7
+<dead_tilde> <dead_iota> <Greek_omega> : "á¿·" U1ff7
+<Multi_key> <bar> <Greek_ALPHA> : "á¾¼" U1fbc
+<dead_iota> <Greek_ALPHA> : "á¾¼" U1fbc
+<Multi_key> <bar> <Greek_ETA> : "ῌ" U1fcc
+<dead_iota> <Greek_ETA> : "ῌ" U1fcc
+<Multi_key> <bar> <Greek_OMEGA> : "ῼ" U1ffc
+<dead_iota> <Greek_OMEGA> : "ῼ" U1ffc
+<Multi_key> <greater> <Greek_rho> : "ῤ" U1fe4
+<dead_horn> <Greek_rho> : "ῤ" U1fe4
+<Multi_key> <less> <Greek_rho> : "á¿¥" U1fe5
+<dead_ogonek> <Greek_rho> : "á¿¥" U1fe5
+<Multi_key> <less> <Greek_RHO> : "Ῥ" U1fec
+<dead_ogonek> <Greek_RHO> : "Ῥ" U1fec
+<dead_horn> <dead_grave> <space> : "á¿" U1fcd
+<dead_grave> <dead_horn> <space> : "á¿" U1fcd
+<dead_horn> <dead_acute> <space> : "á¿Ž" U1fce
+<dead_acute> <dead_horn> <space> : "á¿Ž" U1fce
+<dead_horn> <dead_tilde> <space> : "á¿" U1fcf
+<dead_tilde> <dead_horn> <space> : "á¿" U1fcf
+<dead_ogonek> <dead_grave> <space> : "á¿" U1fdd
+<dead_grave> <dead_ogonek> <space> : "á¿" U1fdd
+<dead_ogonek> <dead_acute> <space> : "á¿ž" U1fde
+<dead_acute> <dead_ogonek> <space> : "á¿ž" U1fde
+<dead_ogonek> <dead_tilde> <space> : "á¿Ÿ" U1fdf
+<dead_tilde> <dead_ogonek> <space> : "á¿Ÿ" U1fdf
+<dead_diaeresis> <dead_grave> <space> : "á¿­" U1fed
+<dead_grave> <dead_diaeresis> <space> : "á¿­" U1fed
+<dead_diaeresis> <dead_acute> <space> : "á¿®" U1fee
+<dead_acute> <dead_diaeresis> <space> : "á¿®" U1fee
+<dead_diaeresis> <dead_tilde> <space> : "á¿" U1fc1
+<dead_tilde> <dead_diaeresis> <space> : "á¿" U1fc1
+<dead_horn> <space> : "᾿" U1fbf
+<dead_horn> <dead_horn> : "᾿" U1fbf
+<dead_ogonek> <space> : "῾" U1ffe
+<dead_ogonek> <dead_ogonek> : "῾" U1ffe
+<dead_grave> <space> : "`" U1fef
+<dead_grave> <dead_grave> : "`" U1fef
+<dead_acute> <space> : "´" U1ffd
+<dead_acute> <dead_acute> : "´" U1ffd
+<dead_tilde> <space> : "á¿€" U1fc0
+<dead_tilde> <dead_tilde> : "á¿€" U1fc0
+<dead_horn> <underscore> : "á¾½" U1fbd
+<dead_iota> <underscore> : "á¾¾" U1fbe
+<dead_diaeresis> <space> : "¨" U00a8
+<dead_diaeresis> <dead_diaeresis> : "¨" U00a8
+<dead_macron> <space> : "¯" U00af
+<dead_macron> <dead_macron> : "¯" U00af
+<dead_breve> <space> : "˘" U02d8
+<dead_breve> <dead_breve> : "˘" U02d8
+<dead_iota> <space> : "ͺ" U037a
+<dead_iota> <dead_iota> : "ͺ" U037a
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" U03aa
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" U03aa
+<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" U03ab
+<dead_diaeresis> <Greek_UPSILON> : "Ϋ" U03ab
+<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" U03ca
+<dead_diaeresis> <Greek_iota> : "ÏŠ" U03ca
+<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" U03cb
+<dead_diaeresis> <Greek_upsilon> : "Ï‹" U03cb
+
+XCOMM Part 3
+XCOMM
+XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted and
+XCOMM converted from the iso8859-7/Compose file.
+
+<Multi_key> <Greek_ALPHA> <apostrophe> : "Ά" Greek_ALPHAaccent
+<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
+<Multi_key> <Greek_EPSILON> <apostrophe>: "Έ" Greek_EPSILONaccent
+<Multi_key> <apostrophe> <Greek_EPSILON>: "Έ" Greek_EPSILONaccent
+<Multi_key> <Greek_ETA> <apostrophe> : "Ή" Greek_ETAaccent
+<Multi_key> <apostrophe> <Greek_ETA> : "Ή" Greek_ETAaccent
+<Multi_key> <Greek_IOTA> <apostrophe> : "Ί" Greek_IOTAaccent
+<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" Greek_IOTAaccent
+<Multi_key> <Greek_OMICRON> <apostrophe>: "Ό" Greek_OMICRONaccent
+<Multi_key> <apostrophe> <Greek_OMICRON>: "Ό" Greek_OMICRONaccent
+<Multi_key> <Greek_UPSILON> <apostrophe>: "ÎŽ" Greek_UPSILONaccent
+<Multi_key> <apostrophe> <Greek_UPSILON>: "ÎŽ" Greek_UPSILONaccent
+<Multi_key> <Greek_OMEGA> <apostrophe> : "Î" Greek_OMEGAaccent
+<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
+<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" Greek_IOTAdiaeresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" Greek_IOTAdiaeresis
+<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" Greek_IOTAdieresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
+<Multi_key> <Greek_UPSILON> <quotedbl> : "Ϋ" Greek_UPSILONdieresis
+<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
+
+<Multi_key> <Greek_alpha> <apostrophe> : "ά" Greek_alphaaccent
+<Multi_key> <apostrophe> <Greek_alpha> : "ά" Greek_alphaaccent
+<Multi_key> <Greek_epsilon> <apostrophe>: "έ" Greek_epsilonaccent
+<Multi_key> <apostrophe> <Greek_epsilon>: "έ" Greek_epsilonaccent
+<Multi_key> <Greek_eta> <apostrophe> : "ή" Greek_etaaccent
+<Multi_key> <apostrophe> <Greek_eta> : "ή" Greek_etaaccent
+<Multi_key> <Greek_iota> <apostrophe> : "ί" Greek_iotaaccent
+<Multi_key> <apostrophe> <Greek_iota> : "ί" Greek_iotaaccent
+<Multi_key> <Greek_omicron> <apostrophe>: "ό" Greek_omicronaccent
+<Multi_key> <apostrophe> <Greek_omicron>: "ό" Greek_omicronaccent
+<Multi_key> <Greek_upsilon> <apostrophe>: "Ï" Greek_upsilonaccent
+<Multi_key> <apostrophe> <Greek_upsilon>: "Ï" Greek_upsilonaccent
+<Multi_key> <Greek_omega> <apostrophe> : "ÏŽ" Greek_omegaaccent
+<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" Greek_omegaaccent
+<Multi_key> <Greek_iota> <quotedbl> : "ÏŠ" Greek_iotadieresis
+<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" Greek_iotadieresis
+<Multi_key> <Greek_upsilon> <quotedbl> : "Ï‹" Greek_upsilondieresis
+<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
+
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <space> : "Î…" Greek_accentdieresis
+<Multi_key> <quotedbl> <apostrophe> <space> : "Î…" Greek_accentdieresis
+
+<dead_acute> <Greek_alpha> : "ά" Greek_alphaaccent
+<dead_acute> <Greek_epsilon> : "έ" Greek_epsilonaccent
+<dead_acute> <Greek_eta> : "ή" Greek_etaaccent
+<dead_acute> <Greek_iota> : "ί" Greek_iotaaccent
+<dead_acute> <Greek_omicron> : "ό" Greek_omicronaccent
+<dead_acute> <Greek_upsilon> : "Ï" Greek_upsilonaccent
+<dead_acute> <Greek_omega> : "ÏŽ" Greek_omegaaccent
+<dead_acute> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
+<dead_acute> <Greek_EPSILON> : "Έ" Greek_EPSILONaccent
+<dead_acute> <Greek_ETA> : "Ή" Greek_ETAaccent
+<dead_acute> <Greek_IOTA> : "Ί" Greek_IOTAaccent
+<dead_acute> <Greek_OMICRON> : "Ό" Greek_OMICRONaccent
+<dead_acute> <Greek_UPSILON> : "ÎŽ" Greek_UPSILONaccent
+<dead_acute> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
+<dead_acute> <space> : "΄" U0384
+<dead_acute> <dead_acute> : "΄" U0384
+<dead_acute> <period> : "·" periodcentered
+<dead_acute> <less> : "«" guillemotleft
+<dead_acute> <greater> : "»" guillemotright
+
+<dead_diaeresis> <Greek_iota> : "ÏŠ" Greek_iotadieresis
+<dead_diaeresis> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" Greek_IOTAdiaeresis
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
+<dead_diaeresis> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
+<dead_diaeresis> <space> : "¨" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
+<dead_diaeresis> <period> : "·" periodcentered
+<dead_diaeresis> <less> : "«" guillemotleft
+<dead_diaeresis> <greater> : "»" guillemotright
+
+<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<dead_acute> <dead_diaeresis> <space> : "Î…" Greek_accentdieresis
+
+<dead_diaeresis> <dead_acute> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<dead_diaeresis> <dead_acute> <space> : "Î…" Greek_accentdieresis
+
+XCOMM Part 4
+XCOMM
+XCOMM Miscellaneous extensions.
+
+<dead_macron> <space> : "¯" macron
+<dead_macron> <dead_macron> : "¯" macron
+<dead_breve> <space> : "˘" breve
+<dead_breve> <dead_breve> : "˘" breve
+
+<dead_grave> <underscore> : "`" grave
+<dead_acute> <underscore> : "´" acute
+<dead_tilde> <underscore> : "~" asciitilde
+
+<Multi_key> <less> <apostrophe> : "‘" leftsinglequotemark
+<Multi_key> <apostrophe> <less> : "‘" leftsinglequotemark
+<Multi_key> <greater> <apostrophe> : "’" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "’" rightsinglequotemark
+<Multi_key> <asciitilde> <asciitilde> : "―" Greek_horizbar
+<Multi_key> <asciicircum> <asciicircum> : "˘" breve
+
+<Multi_key> <slash> <slash> : "Í´" U0374
+<Multi_key> <backslash> <backslash> : "͵" U0375
+<Multi_key> <semicolon> <semicolon> : ";" U037e
+<Multi_key> <colon> <colon> : "·" U0387
+
+<Multi_key> <C> <equal> : "€" EuroSign
+<Multi_key> <equal> <C> : "€" EuroSign
+<Multi_key> <c> <equal> : "€" EuroSign
+<Multi_key> <equal> <c> : "€" EuroSign
+<Multi_key> <E> <equal> : "€" EuroSign
+<Multi_key> <equal> <E> : "€" EuroSign
+<Multi_key> <e> <equal> : "€" EuroSign
+<Multi_key> <equal> <e> : "€" EuroSign
+<Multi_key> <Greek_EPSILON> <equal> : "€" EuroSign
+<Multi_key> <equal> <Greek_EPSILON> : "€" EuroSign
+<Multi_key> <Greek_epsilon> <equal> : "€" EuroSign
+<Multi_key> <equal> <Greek_epsilon> : "€" EuroSign
+
+<Multi_key> <Greek_DELTA> <Greek_RHO> : "₯" U20af
+<Multi_key> <Greek_DELTA> <Greek_rho> : "₯" U20af
+<Multi_key> <Greek_delta> <Greek_RHO> : "₯" U20af
+<Multi_key> <Greek_delta> <Greek_rho> : "₯" U20af
+
+XCOMM End
diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre
index f5bdd589..7be2e807 100644
--- a/nls/en_US.UTF-8/Compose.pre
+++ b/nls/en_US.UTF-8/Compose.pre
@@ -1,2245 +1,5541 @@
-#
-# Copyright (c) 1996-1999 by Sun Microsystems, Inc.
-# All rights reserved.
-#
-#ident "@(#)en_US.UTF-8 1.44 99/11/22 SMI"
-#
-# Compose table for the En_US.UTF8 locale
-#
+XCOMM UTF-8 (Unicode) compose sequence
+XCOMM David.Monniaux@ens.fr
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/en_US.UTF-8,v 1.8 2003/02/25 04:38:32 dawes Exp $
-STATE "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Part 1 - Manual definitions
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Spacing versions of dead accents
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <dead_acute> : "´" acute
+<dead_grave> <space> : "`" grave
+<dead_grave> <dead_grave> : "`" grave
+<dead_circumflex> <space> : "^" asciicircum
+<dead_circumflex> <dead_circumflex> : "^" asciicircum
+<dead_abovering> <space> : "°" degree
+<dead_abovering> <dead_abovering> : "°" degree
+<dead_macron> <space> : "¯" macron
+<dead_macron> <dead_macron> : "¯" macron
+<dead_breve> <space> : "˘" breve
+<dead_breve> <dead_breve> : "˘" breve
+<dead_abovedot> <space> : "Ë™" abovedot
+<dead_abovedot> <dead_abovedot> : "Ë™" abovedot
+<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
+<dead_diaeresis> <space> : "¨" diaeresis
+<dead_doubleacute> <space> : "Ë" U2dd
+<dead_doubleacute> <dead_doubleacute> : "Ë" U2dd
+<dead_caron> <space> : "ˇ" caron
+<dead_caron> <dead_caron> : "ˇ" caron
+<dead_cedilla> <space> : "¸" cedilla
+<dead_cedilla> <dead_cedilla> : "¸" cedilla
+<dead_ogonek> <dead_space> : "Ë›" ogonek
+<dead_ogonek> <dead_ogonek> : "Ë›" ogonek
+<dead_iota> <dead_space> : "ͺ" U37a
+<dead_iota> <dead_iota> : "ͺ" U37a
-# Rules to compose Euro Currency Symbol
-AltGraph<e> : "\xe2\x82\xac"
-AltGraph<E> : "\xe2\x82\xac"
-AltGraph<4> : "\xe2\x82\xac"
-AltGraph<5> : "\xe2\x82\xac"
-Alt<e> : "\xe2\x82\xac"
-Alt<E> : "\xe2\x82\xac"
-Alt<4> : "\xe2\x82\xac"
-Alt<5> : "\xe2\x82\xac"
-Meta<e> : "\xe2\x82\xac"
-Meta<E> : "\xe2\x82\xac"
-Meta<4> : "\xe2\x82\xac"
-Meta<5> : "\xe2\x82\xac"
+XCOMM ASCII characters that may be difficult to access
+XCOMM on some keyboards.
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <plus> <plus> : "\x23" numbersign
-<Multi_key> <apostrophe> <space> : "\x27" apostrophe
-<Multi_key> <space> <apostrophe> : "\x27'" apostrophe
-<Multi_key> <A> <A> : "\x40" at
-<Multi_key> <a> <A> : "\xc4\x84" Aogonek
-<Multi_key> <A> <a> : "\xc4\x84" Aogonek
-<Multi_key> <a> <a> : "\xc4\x85" aogonek
-<Multi_key> <parenleft> <parenleft> : "\x5b" bracketleft
-<Multi_key> <slash> <slash> : "\x5c" backslash
-<Multi_key> <slash> <less> : "\x5c" backslash
-<Multi_key> <less> <slash> : "\x5c" backslash
-<Multi_key> <parenright> <parenright> : "\x5d" bracketright
-<Multi_key> <asciicircum> <space> : "\x5e" asciicircum
-<Multi_key> <space> <asciicircum> : "\x5e" asciicircum
-<Multi_key> <greater> <space> : "\x5e" asciicircum
-<Multi_key> <space> <greater> : "\x5e" asciicircum
-<Multi_key> <grave> <space> : "\x60" grave
-<Multi_key> <space> <grave> : "\x60" grave
-<Multi_key> <parenleft> <minus> : "\x7b" braceleft
-<Multi_key> <minus> <parenleft> : "\x7b" braceleft
-<Multi_key> <slash> <asciicircum> : "\x7c" bar
-<Multi_key> <asciicircum> <slash> : "\x7c" bar
-<Multi_key> <V> <L> : "\x7c" bar
-<Multi_key> <L> <V> : "\x7c" bar
-<Multi_key> <v> <l> : "\x7c" bar
-<Multi_key> <l> <v> : "\x7c" bar
-<Multi_key> <parenright> <minus> : "\x7d" braceright
-<Multi_key> <minus> <parenright> : "\x7d" braceright
-<Multi_key> <asciitilde> <space> : "\x7e" asciitilde
-<Multi_key> <space> <asciitilde> : "\x7e" asciitilde
-<Multi_key> <minus> <space> : "\x7e" asciitilde
-<Multi_key> <space> <minus> : "\x7e" asciitilde
-<Multi_key> <exclam> <exclam> : "\xc2\xa1" exclamdown
-<Multi_key> <C> <acute> : "\xc4\x86" Cacute
-<Multi_key> <c> <acute> : "\xc4\x87" cacute
-<Multi_key> <acute> <C> : "\xc4\x86" Cacute
-<Multi_key> <acute> <c> : "\xc4\x87" cacute
-<Multi_key> <c> <slash> : "\xc2\xa2" cent
-<Multi_key> <slash> <c> : "\xc2\xa2" cent
-<Multi_key> <C> <slash> : "\xc2\xa2" cent
-<Multi_key> <slash> <C> : "\xc2\xa2" cent
-<Multi_key> <C> <bar> : "\xc2\xa2" cent
-<Multi_key> <bar> <C> : "\xc2\xa2" cent
-<Multi_key> <c> <bar> : "\xc2\xa2" cent
-<Multi_key> <bar> <c> : "\xc2\xa2" cent
-<Multi_key> <acute> <L> : "\xc4\xb9" Lacute
-<Multi_key> <L> <acute> : "\xc4\xb9" Lacute
-<Multi_key> <acute> <l> : "\xc4\xba" lacute
-<Multi_key> <l> <acute> : "\xc4\xba" lacute
-<Multi_key> <l> <minus> : "\xc2\xa3" sterling
-<Multi_key> <minus> <l> : "\xc2\xa3" sterling
-<Multi_key> <L> <minus> : "\xc2\xa3" sterling
-<Multi_key> <minus> <L> : "\xc2\xa3" sterling
-<Multi_key> <l> <equal> : "\xc2\xa3" sterling
-<Multi_key> <equal> <l> : "\xc2\xa3" sterling
-<Multi_key> <L> <equal> : "\xc2\xa3" sterling
-<Multi_key> <equal> <L> : "\xc2\xa3" sterling
-<Multi_key> <acute> <N> : "\xc5\x83" Nacute
-<Multi_key> <N> <acute> : "\xc5\x83" Nacute
-<Multi_key> <y> <minus> : "\xc2\xa5" yen
-<Multi_key> <minus> <y> : "\xc2\xa5" yen
-<Multi_key> <Y> <minus> : "\xc2\xa5" yen
-<Multi_key> <minus> <Y> : "\xc2\xa5" yen
-<Multi_key> <y> <equal> : "\xc2\xa5" yen
-<Multi_key> <equal> <y> : "\xc2\xa5" yen
-<Multi_key> <Y> <equal> : "\xc2\xa5" yen
-<Multi_key> <equal> <Y> : "\xc2\xa5" yen
-<Multi_key> <s> <o> : "\xc2\xa7" section
-<Multi_key> <o> <s> : "\xc2\xa7" section
-<Multi_key> <S> <O> : "\xc2\xa7" section
-<Multi_key> <O> <S> : "\xc2\xa7" section
-<Multi_key> <S> <exclam> : "\xc2\xa7" section
-<Multi_key> <exclam> <S> : "\xc2\xa7" section
-<Multi_key> <s> <exclam> : "\xc2\xa7" section
-<Multi_key> <exclam> <s> : "\xc2\xa7" section
-<Multi_key> <S> <0> : "\xc2\xa7" section
-<Multi_key> <0> <S> : "\xc2\xa7" section
-<Multi_key> <s> <0> : "\xc2\xa7" section
-<Multi_key> <0> <s> : "\xc2\xa7" section
-<Multi_key> <x> <o> : "\xc2\xa4" currency
-<Multi_key> <o> <x> : "\xc2\xa4" currency
-<Multi_key> <X> <O> : "\xc2\xa4" currency
-<Multi_key> <O> <X> : "\xc2\xa4" currency
-<Multi_key> <x> <O> : "\xc2\xa4" currency
-<Multi_key> <O> <x> : "\xc2\xa4" currency
-<Multi_key> <X> <o> : "\xc2\xa4" currency
-<Multi_key> <o> <X> : "\xc2\xa4" currency
-<Multi_key> <x> <0> : "\xc2\xa4" currency
-<Multi_key> <0> <x> : "\xc2\xa4" currency
-<Multi_key> <X> <0> : "\xc2\xa4" currency
-<Multi_key> <0> <X> : "\xc2\xa4" currency
-<Multi_key> <c> <o> : "\xc2\xa9" copyright
-<Multi_key> <o> <c> : "\xc2\xa9" copyright
-<Multi_key> <C> <O> : "\xc2\xa9" copyright
-<Multi_key> <O> <C> : "\xc2\xa9" copyright
-<Multi_key> <c> <O> : "\xc2\xa9" copyright
-<Multi_key> <O> <c> : "\xc2\xa9" copyright
-<Multi_key> <C> <o> : "\xc2\xa9" copyright
-<Multi_key> <o> <C> : "\xc2\xa9" copyright
-<Multi_key> <c> <0> : "\xc2\xa9" copyright
-<Multi_key> <0> <c> : "\xc2\xa9" copyright
-<Multi_key> <C> <0> : "\xc2\xa9" copyright
-<Multi_key> <0> <C> : "\xc2\xa9" copyright
-<Multi_key> <a> <minus> : "\xc2\xaa" ordfeminine
-<Multi_key> <minus> <a> : "\xc2\xaa" ordfeminine
-<Multi_key> <A> <minus> : "\xc2\xaa" ordfeminine
-<Multi_key> <minus> <A> : "\xc2\xaa" ordfeminine
-<Multi_key> <o> <minus> : "\xc2\xba" masculine
-<Multi_key> <minus> <o> : "\xc2\xba" masculine
-<Multi_key> <O> <minus> : "\xc2\xba" masculine
-<Multi_key> <minus> <O> : "\xc2\xba" masculine
-<Multi_key> <less> <less> : "\xc2\xab" guillemotleft
-<Multi_key> <greater> <greater> : "\xc2\xbb" guillemotright
-<Multi_key> <0> <asciicircum> : "\xc2\xb0" degree
-<Multi_key> <asciicircum> <0> : "\xc2\xb0" degree
-<Multi_key> <0> <asterisk> : "\xc2\xb0" degree
-<Multi_key> <asterisk> <0> : "\xc2\xb0" degree
-<Multi_key> <plus> <minus> : "\xc2\xb1" plusminus
-<Multi_key> <minus> <plus> : "\xc2\xb1" plusminus
-<Multi_key> <slash> <u> : "\xc2\xb5" mu
-<Multi_key> <u> <slash> : "\xc2\xb5" mu
-<Multi_key> <slash> <U> : "\xc2\xb5" mu
-<Multi_key> <U> <slash> : "\xc2\xb5" mu
-<Multi_key> <1> <asciicircum> : "\xc2\xb9" onesuperior
-<Multi_key> <asciicircum> <1> : "\xc2\xb9" onesuperior
-<Multi_key> <S> <1> : "\xc2\xb9" onesuperior
-<Multi_key> <1> <S> : "\xc2\xb9" onesuperior
-<Multi_key> <s> <1> : "\xc2\xb9" onesuperior
-<Multi_key> <1> <s> : "\xc2\xb9" onesuperior
-<Multi_key> <2> <asciicircum> : "\xc2\xb2" twosuperior
-<Multi_key> <asciicircum> <2> : "\xc2\xb2" twosuperior
-<Multi_key> <S> <2> : "\xc2\xb2" twosuperior
-<Multi_key> <2> <S> : "\xc2\xb2" twosuperior
-<Multi_key> <s> <2> : "\xc2\xb2" twosuperior
-<Multi_key> <2> <s> : "\xc2\xb2" twosuperior
-<Multi_key> <3> <asciicircum> : "\xc2\xb3" threesuperior
-<Multi_key> <asciicircum> <3> : "\xc2\xb3" threesuperior
-<Multi_key> <S> <3> : "\xc2\xb3" threesuperior
-<Multi_key> <3> <S> : "\xc2\xb3" threesuperior
-<Multi_key> <s> <3> : "\xc2\xb3" threesuperior
-<Multi_key> <3> <s> : "\xc2\xb3" threesuperior
-<Multi_key> <p> <exclam> : "\xc2\xb6" paragraph
-<Multi_key> <exclam> <p> : "\xc2\xb6" paragraph
-<Multi_key> <P> <exclam> : "\xc2\xb6" paragraph
-<Multi_key> <exclam> <P> : "\xc2\xb6" paragraph
-<Multi_key> <period> <asciicircum> : "\xc2\xb7" periodcentered
-<Multi_key> <asciicircum> <period> : "\xc2\xb7" periodcentered
-<Multi_key> <period> <period> : "\xc2\xb7" periodcentered
-<Multi_key> <1> <4> : "\xc2\xbc" onequarter
-<Multi_key> <1> <2> : "\xc2\xbd" onehalf
-<Multi_key> <3> <4> : "\xc2\xbe" threequarters
-<Multi_key> <question> <question> : "\xc2\xbf" questiondown
-<Multi_key> <space> <space> : "\xc2\xa0" nobreakspace
-<Multi_key> <bar> <bar> : "\xc2\xa6" brokenbar
-<Multi_key> <exclam> <asciicircum> : "\xc2\xa6" brokenbar
-<Multi_key> <asciicircum> <exclam> : "\xc2\xa6" brokenbar
-<Multi_key> <V> <B> : "\xc2\xa6" brokenbar
-<Multi_key> <B> <V> : "\xc2\xa6" brokenbar
-<Multi_key> <v> <b> : "\xc2\xa6" brokenbar
-<Multi_key> <b> <v> : "\xc2\xa6" brokenbar
-<Multi_key> <minus> <comma> : "\xc2\xac" notsign
-<Multi_key> <comma> <minus> : "\xc2\xac" notsign
-<Multi_key> <minus> <minus> : "\xc2\xad" hyphen
-<Multi_key> <R> <O> : "\xc2\xae" registered
-<Multi_key> <O> <R> : "\xc2\xae" registered
-<Multi_key> <minus> <asciicircum> : "\xc2\xaf" macron
-<Multi_key> <asciicircum> <minus> : "\xc2\xaf" macron
-<Multi_key> <underscore> <asciicircum> : "\xc2\xaf" macron
-<Multi_key> <asciicircum> <underscore> : "\xc2\xaf" macron
-<Multi_key> <underscore> <underscore> : "\xc2\xaf" macron
-<Multi_key> <minus> <colon> : "\xc3\xb7" division
-<Multi_key> <colon> <minus> : "\xc3\xb7" division
-<Multi_key> <x> <x> : "\xc3\x97" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\xc2\xb4" acute
-<Multi_key> <comma> <comma> : "\xc2\xb8" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\xc2\xa8" diaeresis
-<Multi_key> <A> <grave> : "\xc3\x80" Agrave
-<Multi_key> <grave> <A> : "\xc3\x80" Agrave
-<Multi_key> <A> <acute> : "\xc3\x81" Aacute
-<Multi_key> <acute> <A> : "\xc3\x81" Aacute
-<Multi_key> <A> <apostrophe> : "\xc3\x81" Aacute
-<Multi_key> <apostrophe> <A> : "\xc3\x81" Aacute
-<Multi_key> <A> <asciicircum> : "\xc3\x82" Acircumflex
-<Multi_key> <asciicircum> <A> : "\xc3\x82" Acircumflex
-<Multi_key> <A> <greater> : "\xc3\x82" Acircumflex
-<Multi_key> <greater> <A> : "\xc3\x82" Acircumflex
-<Multi_key> <A> <asciitilde> : "\xc3\x83" Atilde
-<Multi_key> <asciitilde> <A> : "\xc3\x83" Atilde
-<Multi_key> <A> <quotedbl> : "\xc3\x84" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\xc3\x84" Adiaeresis
-<Multi_key> <A> <asterisk> : "\xc3\x85" Aring
-<Multi_key> <asterisk> <A> : "\xc3\x85" Aring
-<Multi_key> <A> <E> : "\xc3\x86" AE
-<Multi_key> <a> <grave> : "\xc3\xa0" agrave
-<Multi_key> <grave> <a> : "\xc3\xa0" agrave
-<Multi_key> <a> <acute> : "\xc3\xa1" aacute
-<Multi_key> <acute> <a> : "\xc3\xa1" aacute
-<Multi_key> <a> <apostrophe> : "\xc3\xa1" aacute
-<Multi_key> <apostrophe> <a> : "\xc3\xa1" aacute
-<Multi_key> <a> <asciicircum> : "\xc3\xa2" acircumflex
-<Multi_key> <asciicircum> <a> : "\xc3\xa2" acircumflex
-<Multi_key> <a> <greater> : "\xc3\xa2" acircumflex
-<Multi_key> <greater> <a> : "\xc3\xa2" acircumflex
-<Multi_key> <a> <asciitilde> : "\xc3\xa3" atilde
-<Multi_key> <asciitilde> <a> : "\xc3\xa3" atilde
-<Multi_key> <a> <quotedbl> : "\xc3\xa4" adiaeresis
-<Multi_key> <quotedbl> <a> : "\xc3\xa4" adiaeresis
-<Multi_key> <a> <asterisk> : "\xc3\xa5" aring
-<Multi_key> <asterisk> <a> : "\xc3\xa5" aring
-<Multi_key> <a> <e> : "\xc3\xa6" ae
-<Multi_key> <C> <comma> : "\xc3\x87" Ccedilla
-<Multi_key> <comma> <C> : "\xc3\x87" Ccedilla
-<Multi_key> <c> <comma> : "\xc3\xa7" ccedilla
-<Multi_key> <comma> <c> : "\xc3\xa7" ccedilla
-#<Multi_key> <minus> <D> : "\xc3\x90" ETH
-#<Multi_key> <minus> <d> : "\xc3\xb0" eth
-<Multi_key> <D> <minus> : "\xc3\x90" ETH
-<Multi_key> <d> <minus> : "\xc3\xb0" eth
-<Multi_key> <slash> <D> : "\xc4\x90" Dstroke
-<Multi_key> <slash> <d> : "\xc4\x91" dstroke
-<Multi_key> <E> <grave> : "\xc3\x88" Egrave
-<Multi_key> <grave> <E> : "\xc3\x88" Egrave
-<Multi_key> <E> <acute> : "\xc3\x89" Eacute
-<Multi_key> <acute> <E> : "\xc3\x89" Eacute
-<Multi_key> <E> <apostrophe> : "\xc3\x89" Eacute
-<Multi_key> <apostrophe> <E> : "\xc3\x89" Eacute
-<Multi_key> <E> <asciicircum> : "\xc3\x8a" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\xc3\x8a" Ecircumflex
-<Multi_key> <E> <greater> : "\xc3\x8a" Ecircumflex
-<Multi_key> <greater> <E> : "\xc3\x8a" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\xc3\x8b" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\xc3\x8b" Ediaeresis
-<Multi_key> <e> <grave> : "\xc3\xa8" egrave
-<Multi_key> <grave> <e> : "\xc3\xa8" egrave
-<Multi_key> <e> <acute> : "\xc3\xa9" eacute
-<Multi_key> <acute> <e> : "\xc3\xa9" eacute
-<Multi_key> <e> <apostrophe> : "\xc3\xa9" eacute
-<Multi_key> <apostrophe> <e> : "\xc3\xa9" eacute
-<Multi_key> <e> <asciicircum> : "\xc3\xaa" ecircumflex
-<Multi_key> <asciicircum> <e> : "\xc3\xaa" ecircumflex
-<Multi_key> <e> <greater> : "\xc3\xaa" ecircumflex
-<Multi_key> <greater> <e> : "\xc3\xaa" ecircumflex
-<Multi_key> <e> <quotedbl> : "\xc3\xab" ediaeresis
-<Multi_key> <quotedbl> <e> : "\xc3\xab" ediaeresis
-<Multi_key> <I> <grave> : "\xc3\x8c" Igrave
-<Multi_key> <grave> <I> : "\xc3\x8c" Igrave
-<Multi_key> <I> <acute> : "\xc3\x8d" Iacute
-<Multi_key> <acute> <I> : "\xc3\x8d" Iacute
-<Multi_key> <I> <apostrophe> : "\xc3\x8d" Iacute
-<Multi_key> <apostrophe> <I> : "\xc3\x8d" Iacute
-<Multi_key> <I> <asciicircum> : "\xc3\x8e" Icircumflex
-<Multi_key> <asciicircum> <I> : "\xc3\x8e" Icircumflex
-<Multi_key> <I> <greater> : "\xc3\x8e" Icircumflex
-<Multi_key> <greater> <I> : "\xc3\x8e" Icircumflex
-<Multi_key> <I> <quotedbl> : "\xc3\x8f" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\xc3\x8f" Idiaeresis
-<Multi_key> <i> <grave> : "\xc3\xac" igrave
-<Multi_key> <grave> <i> : "\xc3\xac" igrave
-<Multi_key> <i> <acute> : "\xc3\xad" iacute
-<Multi_key> <acute> <i> : "\xc3\xad" iacute
-<Multi_key> <i> <apostrophe> : "\xc3\xad" iacute
-<Multi_key> <apostrophe> <i> : "\xc3\xad" iacute
-<Multi_key> <i> <asciicircum> : "\xc3\xae" icircumflex
-<Multi_key> <asciicircum> <i> : "\xc3\xae" icircumflex
-<Multi_key> <i> <greater> : "\xc3\xae" icircumflex
-<Multi_key> <greater> <i> : "\xc3\xae" icircumflex
-<Multi_key> <i> <quotedbl> : "\xc3\xaf" idiaeresis
-<Multi_key> <quotedbl> <i> : "\xc3\xaf" idiaeresis
-<Multi_key> <N> <asciitilde> : "\xc3\x91" Ntilde
-<Multi_key> <asciitilde> <N> : "\xc3\x91" Ntilde
-<Multi_key> <N> <minus> : "\xc3\x91" Ntilde
-<Multi_key> <minus> <N> : "\xc3\x91" Ntilde
-<Multi_key> <n> <asciitilde> : "\xc3\xb1" ntilde
-<Multi_key> <asciitilde> <n> : "\xc3\xb1" ntilde
-<Multi_key> <n> <minus> : "\xc3\xb1" ntilde
-<Multi_key> <minus> <n> : "\xc3\xb1" ntilde
-<Multi_key> <O> <grave> : "\xc3\x92" Ograve
-<Multi_key> <grave> <O> : "\xc3\x92" Ograve
-<Multi_key> <O> <acute> : "\xc3\x93" Oacute
-<Multi_key> <acute> <O> : "\xc3\x93" Oacute
-<Multi_key> <O> <apostrophe> : "\xc3\x93" Oacute
-<Multi_key> <apostrophe> <O> : "\xc3\x93" Oacute
-<Multi_key> <O> <asciicircum> : "\xc3\x94" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\xc3\x94" Ocircumflex
-<Multi_key> <O> <greater> : "\xc3\x94" Ocircumflex
-<Multi_key> <greater> <O> : "\xc3\x94" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\xc3\x95" Otilde
-<Multi_key> <asciitilde> <O> : "\xc3\x95" Otilde
-<Multi_key> <O> <quotedbl> : "\xc3\x96" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\xc3\x96" Odiaeresis
-<Multi_key> <O> <slash> : "\xc3\x98" Ooblique
-<Multi_key> <slash> <O> : "\xc3\x98" Ooblique
-<Multi_key> <o> <grave> : "\xc3\xb2" ograve
-<Multi_key> <grave> <o> : "\xc3\xb2" ograve
-<Multi_key> <o> <acute> : "\xc3\xb3" oacute
-<Multi_key> <acute> <o> : "\xc3\xb3" oacute
-<Multi_key> <o> <apostrophe> : "\xc3\xb3" oacute
-<Multi_key> <apostrophe> <o> : "\xc3\xb3" oacute
-<Multi_key> <o> <asciicircum> : "\xc3\xb4" ocircumflex
-<Multi_key> <asciicircum> <o> : "\xc3\xb4" ocircumflex
-<Multi_key> <o> <greater> : "\xc3\xb4" ocircumflex
-<Multi_key> <greater> <o> : "\xc3\xb4" ocircumflex
-<Multi_key> <o> <asciitilde> : "\xc3\xb5" otilde
-<Multi_key> <asciitilde> <o> : "\xc3\xb5" otilde
-<Multi_key> <o> <quotedbl> : "\xc3\xb6" odiaeresis
-<Multi_key> <quotedbl> <o> : "\xc3\xb6" odiaeresis
-<Multi_key> <o> <slash> : "\xc3\xb8" oslash
-<Multi_key> <slash> <o> : "\xc3\xb8" oslash
-<Multi_key> <U> <grave> : "\xc3\x99" Ugrave
-<Multi_key> <grave> <U> : "\xc3\x99" Ugrave
-<Multi_key> <U> <acute> : "\xc3\x9a" Uacute
-<Multi_key> <acute> <U> : "\xc3\x9a" Uacute
-<Multi_key> <U> <apostrophe> : "\xc3\x9a" Uacute
-<Multi_key> <apostrophe> <U> : "\xc3\x9a" Uacute
-<Multi_key> <U> <asciicircum> : "\xc3\x9b" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\xc3\x9b" Ucircumflex
-<Multi_key> <U> <greater> : "\xc3\x9b" Ucircumflex
-<Multi_key> <greater> <U> : "\xc3\x9b" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\xc3\x9c" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\xc3\x9c" Udiaeresis
-<Multi_key> <u> <grave> : "\xc3\xb9" ugrave
-<Multi_key> <grave> <u> : "\xc3\xb9" ugrave
-<Multi_key> <u> <acute> : "\xc3\xba" uacute
-<Multi_key> <acute> <u> : "\xc3\xba" uacute
-<Multi_key> <u> <apostrophe> : "\xc3\xba" uacute
-<Multi_key> <apostrophe> <u> : "\xc3\xba" uacute
-<Multi_key> <u> <asciicircum> : "\xc3\xbb" ucircumflex
-<Multi_key> <asciicircum> <u> : "\xc3\xbb" ucircumflex
-<Multi_key> <u> <greater> : "\xc3\xbb" ucircumflex
-<Multi_key> <greater> <u> : "\xc3\xbb" ucircumflex
-<Multi_key> <u> <quotedbl> : "\xc3\xbc" udiaeresis
-<Multi_key> <quotedbl> <u> : "\xc3\xbc" udiaeresis
-<Multi_key> <s> <s> : "\xc3\x9f" ssharp
-<Multi_key> <T> <H> : "\xc3\x9e" THORN
-<Multi_key> <t> <h> : "\xc3\xbe" thorn
-<Multi_key> <Y> <acute> : "\xc3\x9d" Yacute
-<Multi_key> <acute> <Y> : "\xc3\x9d" Yacute
-<Multi_key> <Y> <apostrophe> : "\xc3\x9d" Yacute
-<Multi_key> <apostrophe> <Y> : "\xc3\x9d" Yacute
-<Multi_key> <y> <acute> : "\xc3\xbd" yacute
-<Multi_key> <acute> <y> : "\xc3\xbd" yacute
-<Multi_key> <y> <apostrophe> : "\xc3\xbd" yacute
-<Multi_key> <apostrophe> <y> : "\xc3\xbd" yacute
-<Multi_key> <y> <quotedbl> : "\xc3\xbf" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\xc3\xbf" ydiaeresis
-<ecaron> : "\xc4\x9b" ecaron
-<scaron> : "\xc5\xa1" scaron
-<ccaron> : "\xc4\x8d" ccaron
-<rcaron> : "\xc5\x99" rcaron
-<yacute> : "\xc3\xbd" yacute
-<aacute> : "\xc3\xa1" aacute
-<iacute> : "\xc3\xad" iacute
-<eacute> : "\xc3\xa9" eacute
-<uacute> : "\xc3\xba" uacute
-<uring> : "\xc5\xaf" uring
-<section> : "\xc2\xa7" section
-<ssharp> : "\xc3\x9f" ssharp
-<zabovedot> : "\xc5\xbc" zabovedot
-<Zabovedot> : "\xc5\xbb" Zabovedot
-<ogonek> : "\xcb\x9b" ogonek
-<oacute> : "\xc3\xb3" oacute
-<zacute> : "\xc5\xba" zacute
-<lstroke> : "\xc5\x82" lstroke
-<Lstroke> : "\xc5\x81" Lstroke
-<aogonek> : "\xc4\x85" aogonek
-<eogonek> : "\xc4\x99" eogonek
-<currency> : "\xc2\xa4" currency
-<sacute> : "\xc5\x9b" sacute
-<nacute> : "\xc5\x84" nacute
-<cacute> : "\xc4\x87" cacute
-<degree> : "\xc2\xb0" degree
-<Odiaeresis> : "\xc3\x96" Odiaeresis
-<Udiaeresis> : "\xc3\x9c" Udiaeresis
-<odiaeresis> : "\xc3\xb6" odiaeresis
-<udiaeresis> : "\xc3\xbc" udiaeresis
-<Oacute> : "\xc3\x93" Oacute
-<odoubleacute> : "\xc5\x91" odoubleacute
-<Odoubleacute> : "\xc5\x90" Odoubleacute
-<Uacute> : "\xc3\x9a" Uacute
-<Eacute> : "\xc3\x89" Eacute
-<Aacute> : "\xc3\x81" Aacute
-<adiaeresis> : "\xc3\xa4" adiaeresis
-<Adiaeresis> : "\xc3\x84" Adiaeresis
-<udoubleacute> : "\xc5\xb1" udoubleacute
-<Udoubleacute> : "\xc5\xb0" Udoubleacute
-<Iacute> : "\xc3\x8d" Iacute
-<dead_circumflex> <slash> : "\x7c" bar
-<dead_grave> <space> : "\x60" grave
-<dead_acute> <space> : "\x27" apostrophe
-<dead_diaeresis> <space> : "\xc2\xa8" diaeresis
-<dead_circumflex> <space> : "\x5e" asciicircum
-<dead_tilde> <space> : "\x7e" asciitilde
-<dead_circumflex> <0> : "\xc2\xb0" degree
-<dead_circumflex> <1> : "\xc2\xb9" onesuperior
-<dead_circumflex> <2> : "\xc2\xb2" twosuperior
-<dead_circumflex> <3> : "\xc2\xb3" threesuperior
-<dead_circumflex> <period> : "\xc2\xb7" periodcentered
-<dead_circumflex> <exclam> : "\xc2\xa6" brokenbar
-<dead_cedilla> <minus> : "\xc2\xac" notsign
-<dead_circumflex> <minus> : "\xc2\xaf" macron
-<dead_circumflex> <underscore> : "\xc2\xaf" macron
-<dead_acute> <apostrophe> : "\xc2\xb4" acute
-<dead_cedilla> <comma> : "\xc2\xb8" cedilla
-<dead_diaeresis> <quotedbl> : "\xc2\xa8" diaeresis
-<dead_grave> <A> : "\xc3\x80" Agrave
-<dead_acute> <A> : "\xc3\x81" Aacute
-<dead_circumflex> <A> : "\xc3\x82" Acircumflex
-<dead_tilde> <A> : "\xc3\x83" Atilde
-<dead_diaeresis> <A> : "\xc3\x84" Adiaeresis
-<dead_grave> <a> : "\xc3\xa0" agrave
-<dead_acute> <a> : "\xc3\xa1" aacute
-<dead_circumflex> <a> : "\xc3\xa2" acircumflex
-<dead_tilde> <a> : "\xc3\xa3" atilde
-<dead_diaeresis> <a> : "\xc3\xa4" adiaeresis
-<dead_cedilla> <C> : "\xc3\x87" Ccedilla
-<dead_cedilla> <c> : "\xc3\xa7" ccedilla
-<dead_grave> <E> : "\xc3\x88" Egrave
-<dead_acute> <E> : "\xc3\x89" Eacute
-<dead_circumflex> <E> : "\xc3\x8a" Ecircumflex
-<dead_diaeresis> <E> : "\xc3\x8b" Ediaeresis
-<dead_grave> <e> : "\xc3\xa8" egrave
-<dead_acute> <e> : "\xc3\xa9" eacute
-<dead_circumflex> <e> : "\xc3\xaa" ecircumflex
-<dead_diaeresis> <e> : "\xc3\xab" ediaeresis
-<dead_grave> <I> : "\xc3\x8c" Igrave
-<dead_acute> <I> : "\xc3\x8d" Iacute
-<dead_circumflex> <I> : "\xc3\x8e" Icircumflex
-<dead_diaeresis> <I> : "\xc3\x8f" Idiaeresis
-<dead_grave> <i> : "\xc3\xac" igrave
-<dead_acute> <i> : "\xc3\xad" iacute
-<dead_circumflex> <i> : "\xc3\xae" icircumflex
-<dead_diaeresis> <i> : "\xc3\xaf" idiaeresis
-<dead_tilde> <N> : "\xc3\x91" Ntilde
-<dead_tilde> <n> : "\xc3\xb1" ntilde
-<dead_grave> <O> : "\xc3\x92" Ograve
-<dead_acute> <O> : "\xc3\x93" Oacute
-<dead_circumflex> <O> : "\xc3\x94" Ocircumflex
-<dead_tilde> <O> : "\xc3\x95" Otilde
-<dead_diaeresis> <O> : "\xc3\x96" Odiaeresis
-<dead_grave> <o> : "\xc3\xb2" ograve
-<dead_acute> <o> : "\xc3\xb3" oacute
-<dead_circumflex> <o> : "\xc3\xb4" ocircumflex
-<dead_tilde> <o> : "\xc3\xb5" otilde
-<dead_diaeresis> <o> : "\xc3\xb6" odiaeresis
-<dead_cedilla> <S> : "\xc5\x9e" Scedilla
-<dead_cedilla> <s> : "\xc5\x9f" scedilla
-<dead_grave> <U> : "\xc3\x99" Ugrave
-<dead_acute> <U> : "\xc3\x9a" Uacute
-<dead_circumflex> <U> : "\xc3\x9b" Ucircumflex
-<dead_diaeresis> <U> : "\xc3\x9c" Udiaeresis
-<dead_grave> <u> : "\xc3\xb9" ugrave
-<dead_acute> <u> : "\xc3\xba" uacute
-<dead_circumflex> <u> : "\xc3\xbb" ucircumflex
-<dead_diaeresis> <u> : "\xc3\xbc" udiaeresis
-<dead_acute> <Y> : "\xc3\x9d" Yacute
-<dead_acute> <y> : "\xc3\xbd" yacute
-<Multi_key> <caron> <Z> : "\xc5\xbd" Zcaron
-<Multi_key> <Z> <caron> : "\xc5\xbd" Zcaron
-<Multi_key> <v> <Z> : "\xc5\xbd" Zcaron
-<Multi_key> <Z> <v> : "\xc5\xbd" Zcaron
-<zcaron> : "\xc5\xbe" zcaron
-<Multi_key> <caron> <z> : "\xc5\xbe" zcaron
-<Multi_key> <z> <caron> : "\xc5\xbe" zcaron
-<Multi_key> <z> <v> : "\xc5\xbe" zcaron
-<Multi_key> <v> <z> : "\xc5\xbe" zcaron
-<dead_diaeresis> <y> : "\xc3\xbf" ydiaeresis
-Ctrl<T> <plus> <plus> : "\x23" numbersign
-Ctrl<T> <apostrophe> <space> : "\x27" apostrophe
-Ctrl<T> <space> <apostrophe> : "\x27" apostrophe
-Ctrl<T> <A> <A> : "\x40" at
-Ctrl<T> <parenleft> <parenleft> : "\x5b" bracketleft
-Ctrl<T> <slash> <slash> : "\x5c" backslash
-Ctrl<T> <slash> <less> : "\x5c" backslash
-Ctrl<T> <less> <slash> : "\x5c" backslash
-Ctrl<T> <parenright> <parenright> : "\x5d" bracketright
-Ctrl<T> <asciicircum> <space> : "\x5e" asciicircum
-Ctrl<T> <space> <asciicircum> : "\x5e" asciicircum
-Ctrl<T> <greater> <space> : "\x5e" asciicircum
-Ctrl<T> <space> <greater> : "\x5e" asciicircum
-Ctrl<T> <grave> <space> : "\x60" grave
-Ctrl<T> <space> <grave> : "\x60" grave
-Ctrl<T> <parenleft> <minus> : "\x7b" braceleft
-Ctrl<T> <minus> <parenleft> : "\x7b" braceleft
-Ctrl<T> <slash> <asciicircum> : "\x7c" bar
-Ctrl<T> <asciicircum> <slash> : "\x7c" bar
-Ctrl<T> <V> <L> : "\x7c" bar
-Ctrl<T> <L> <V> : "\x7c" bar
-Ctrl<T> <v> <l> : "\x7c" bar
-Ctrl<T> <l> <v> : "\x7c" bar
-Ctrl<T> <parenright> <minus> : "\x7d" braceright
-Ctrl<T> <minus> <parenright> : "\x7d" braceright
-Ctrl<T> <asciitilde> <space> : "\x7e" asciitilde
-Ctrl<T> <space> <asciitilde> : "\x7e" asciitilde
-Ctrl<T> <minus> <space> : "\x7e" asciitilde
-Ctrl<T> <space> <minus> : "\x7e" asciitilde
-Ctrl<T> <exclam> <exclam> : "\xc2\xa1" exclamdown
-Ctrl<T> <c> <slash> : "\xc2\xa2" cent
-Ctrl<T> <slash> <c> : "\xc2\xa2" cent
-Ctrl<T> <C> <slash> : "\xc2\xa2" cent
-Ctrl<T> <slash> <C> : "\xc2\xa2" cent
-Ctrl<T> <C> <bar> : "\xc2\xa2" cent
-Ctrl<T> <bar> <C> : "\xc2\xa2" cent
-Ctrl<T> <c> <bar> : "\xc2\xa2" cent
-Ctrl<T> <bar> <c> : "\xc2\xa2" cent
-Ctrl<T> <acute> <L> : "\xc4\xb9" Lacute
-Ctrl<T> <L> <acute> : "\xc4\xb9" Lacute
-Ctrl<T> <acute> <l> : "\xc4\xba" lacute
-Ctrl<T> <l> <acute> : "\xc4\xba" lacute
-Ctrl<T> <l> <minus> : "\xc2\xa3" sterling
-Ctrl<T> <minus> <l> : "\xc2\xa3" sterling
-Ctrl<T> <L> <minus> : "\xc2\xa3" sterling
-Ctrl<T> <minus> <L> : "\xc2\xa3" sterling
-Ctrl<T> <l> <equal> : "\xc2\xa3" sterling
-Ctrl<T> <equal> <l> : "\xc2\xa3" sterling
-Ctrl<T> <L> <equal> : "\xc2\xa3" sterling
-Ctrl<T> <equal> <L> : "\xc2\xa3" sterling
-Ctrl<T> <y> <minus> : "\xc2\xa5" yen
-Ctrl<T> <minus> <y> : "\xc2\xa5" yen
-Ctrl<T> <Y> <minus> : "\xc2\xa5" yen
-Ctrl<T> <minus> <Y> : "\xc2\xa5" yen
-Ctrl<T> <y> <equal> : "\xc2\xa5" yen
-Ctrl<T> <equal> <y> : "\xc2\xa5" yen
-Ctrl<T> <Y> <equal> : "\xc2\xa5" yen
-Ctrl<T> <equal> <Y> : "\xc2\xa5" yen
-Ctrl<T> <s> <o> : "\xc2\xa7" section
-Ctrl<T> <o> <s> : "\xc2\xa7" section
-Ctrl<T> <S> <O> : "\xc2\xa7" section
-Ctrl<T> <O> <S> : "\xc2\xa7" section
-Ctrl<T> <S> <exclam> : "\xc2\xa7" section
-Ctrl<T> <exclam> <S> : "\xc2\xa7" section
-Ctrl<T> <s> <exclam> : "\xc2\xa7" section
-Ctrl<T> <exclam> <s> : "\xc2\xa7" section
-Ctrl<T> <S> <0> : "\xc2\xa7" section
-Ctrl<T> <0> <S> : "\xc2\xa7" section
-Ctrl<T> <s> <0> : "\xc2\xa7" section
-Ctrl<T> <0> <s> : "\xc2\xa7" section
-Ctrl<T> <x> <o> : "\xc2\xa4" currency
-Ctrl<T> <o> <x> : "\xc2\xa4" currency
-Ctrl<T> <X> <O> : "\xc2\xa4" currency
-Ctrl<T> <O> <X> : "\xc2\xa4" currency
-Ctrl<T> <x> <O> : "\xc2\xa4" currency
-Ctrl<T> <O> <x> : "\xc2\xa4" currency
-Ctrl<T> <X> <o> : "\xc2\xa4" currency
-Ctrl<T> <o> <X> : "\xc2\xa4" currency
-Ctrl<T> <x> <0> : "\xc2\xa4" currency
-Ctrl<T> <0> <x> : "\xc2\xa4" currency
-Ctrl<T> <X> <0> : "\xc2\xa4" currency
-Ctrl<T> <0> <X> : "\xc2\xa4" currency
-Ctrl<T> <c> <o> : "\xc2\xa9" copyright
-Ctrl<T> <o> <c> : "\xc2\xa9" copyright
-Ctrl<T> <C> <O> : "\xc2\xa9" copyright
-Ctrl<T> <O> <C> : "\xc2\xa9" copyright
-Ctrl<T> <c> <O> : "\xc2\xa9" copyright
-Ctrl<T> <O> <c> : "\xc2\xa9" copyright
-Ctrl<T> <C> <o> : "\xc2\xa9" copyright
-Ctrl<T> <o> <C> : "\xc2\xa9" copyright
-Ctrl<T> <c> <0> : "\xc2\xa9" copyright
-Ctrl<T> <0> <c> : "\xc2\xa9" copyright
-Ctrl<T> <C> <0> : "\xc2\xa9" copyright
-Ctrl<T> <0> <C> : "\xc2\xa9" copyright
-Ctrl<T> <a> <underscore> : "\xc2\xaa" ordfeminine
-Ctrl<T> <underscore> <a> : "\xc2\xaa" ordfeminine
-Ctrl<T> <A> <underscore> : "\xc2\xaa" ordfeminine
-Ctrl<T> <underscore> <A> : "\xc2\xaa" ordfeminine
-Ctrl<T> <O> <underscore> : "\xc2\xba" masculine
-Ctrl<T> <o> <underscore> : "\xc2\xba" masculine
-Ctrl<T> <underscore> <o> : "\xc2\xba" masculine
-Ctrl<T> <underscore> <O> : "\xc2\xba" masculine
-Ctrl<T> <less> <less> : "\xc2\xab" guillemotleft
-Ctrl<T> <greater> <greater> : "\xc2\xbb" guillemotright
-Ctrl<T> <0> <asciicircum> : "\xc2\xb0" degree
-Ctrl<T> <asciicircum> <0> : "\xc2\xb0" degree
-Ctrl<T> <0> <asterisk> : "\xc2\xb0" degree
-Ctrl<T> <asterisk> <0> : "\xc2\xb0" degree
-Ctrl<T> <plus> <minus> : "\xc2\xb1" plusminus
-Ctrl<T> <minus> <plus> : "\xc2\xb1" plusminus
-Ctrl<T> <slash> <u> : "\xc2\xb5" mu
-Ctrl<T> <u> <slash> : "\xc2\xb5" mu
-Ctrl<T> <slash> <U> : "\xc2\xb5" mu
-Ctrl<T> <U> <slash> : "\xc2\xb5" mu
-Ctrl<T> <1> <asciicircum> : "\xc2\xb9" onesuperior
-Ctrl<T> <asciicircum> <1> : "\xc2\xb9" onesuperior
-Ctrl<T> <S> <1> : "\xc2\xb9" onesuperior
-Ctrl<T> <1> <S> : "\xc2\xb9" onesuperior
-Ctrl<T> <s> <1> : "\xc2\xb9" onesuperior
-Ctrl<T> <1> <s> : "\xc2\xb9" onesuperior
-Ctrl<T> <2> <asciicircum> : "\xc2\xb2" twosuperior
-Ctrl<T> <asciicircum> <2> : "\xc2\xb2" twosuperior
-Ctrl<T> <S> <2> : "\xc2\xb2" twosuperior
-Ctrl<T> <2> <S> : "\xc2\xb2" twosuperior
-Ctrl<T> <s> <2> : "\xc2\xb2" twosuperior
-Ctrl<T> <2> <s> : "\xc2\xb2" twosuperior
-Ctrl<T> <3> <asciicircum> : "\xc2\xb3" threesuperior
-Ctrl<T> <asciicircum> <3> : "\xc2\xb3" threesuperior
-Ctrl<T> <S> <3> : "\xc2\xb3" threesuperior
-Ctrl<T> <3> <S> : "\xc2\xb3" threesuperior
-Ctrl<T> <s> <3> : "\xc2\xb3" threesuperior
-Ctrl<T> <3> <s> : "\xc2\xb3" threesuperior
-Ctrl<T> <p> <exclam> : "\xc2\xb6" paragraph
-Ctrl<T> <exclam> <p> : "\xc2\xb6" paragraph
-Ctrl<T> <P> <exclam> : "\xc2\xb6" paragraph
-Ctrl<T> <exclam> <P> : "\xc2\xb6" paragraph
-Ctrl<T> <period> <asciicircum> : "\xc2\xb7" periodcentered
-Ctrl<T> <asciicircum> <period> : "\xc2\xb7" periodcentered
-Ctrl<T> <period> <period> : "\xc2\xb7" periodcentered
-Ctrl<T> <1> <4> : "\xc2\xbc" onequarter
-Ctrl<T> <1> <2> : "\xc2\xbd" onehalf
-Ctrl<T> <3> <4> : "\xc2\xbe" threequarters
-Ctrl<T> <question> <question> : "\xc2\xbf" questiondown
-Ctrl<T> <space> <space> : "\xc2\xa0" nobreakspace
-Ctrl<T> <bar> <bar> : "\xc2\xa6" brokenbar
-Ctrl<T> <exclam> <asciicircum> : "\xc2\xa6" brokenbar
-Ctrl<T> <asciicircum> <exclam> : "\xc2\xa6" brokenbar
-Ctrl<T> <V> <B> : "\xc2\xa6" brokenbar
-Ctrl<T> <B> <V> : "\xc2\xa6" brokenbar
-Ctrl<T> <v> <b> : "\xc2\xa6" brokenbar
-Ctrl<T> <b> <v> : "\xc2\xa6" brokenbar
-Ctrl<T> <minus> <comma> : "\xc2\xac" notsign
-Ctrl<T> <comma> <minus> : "\xc2\xac" notsign
-Ctrl<T> <minus> <minus> : "\xc2\xad" hyphen
-Ctrl<T> <R> <O> : "\xc2\xae" registered
-Ctrl<T> <O> <R> : "\xc2\xae" registered
-Ctrl<T> <minus> <asciicircum> : "\xc2\xaf" macron
-Ctrl<T> <asciicircum> <minus> : "\xc2\xaf" macron
-Ctrl<T> <underscore> <asciicircum> : "\xc2\xaf" macron
-Ctrl<T> <asciicircum> <underscore> : "\xc2\xaf" macron
-Ctrl<T> <underscore> <underscore> : "\xc2\xaf" macron
-Ctrl<T> <minus> <colon> : "\xc3\xb7" division
-Ctrl<T> <colon> <minus> : "\xc3\xb7" division
-Ctrl<T> <x> <x> : "\xc3\x97" multiply
-Ctrl<T> <apostrophe> <apostrophe> : "\xc2\xb4" acute
-Ctrl<T> <comma> <comma> : "\xc2\xb8" cedilla
-Ctrl<T> <quotedbl> <quotedbl> : "\xc2\xa8" diaeresis
-Ctrl<T> <A> <grave> : "\xc3\x80" Agrave
-Ctrl<T> <grave> <A> : "\xc3\x80" Agrave
-Ctrl<T> <A> <acute> : "\xc3\x81" Aacute
-Ctrl<T> <acute> <A> : "\xc3\x81" Aacute
-Ctrl<T> <A> <apostrophe> : "\xc3\x81" Aacute
-Ctrl<T> <apostrophe> <A> : "\xc3\x81" Aacute
-Ctrl<T> <A> <asciicircum> : "\xc3\x82" Acircumflex
-Ctrl<T> <asciicircum> <A> : "\xc3\x82" Acircumflex
-Ctrl<T> <A> <greater> : "\xc3\x82" Acircumflex
-Ctrl<T> <greater> <A> : "\xc3\x82" Acircumflex
-Ctrl<T> <A> <asciitilde> : "\xc3\x83" Atilde
-Ctrl<T> <asciitilde> <A> : "\xc3\x83" Atilde
-Ctrl<T> <A> <minus> : "\xc3\x83" Atilde
-Ctrl<T> <minus> <A> : "\xc3\x83" Atilde
-Ctrl<T> <A> <quotedbl> : "\xc3\x84" Adiaeresis
-Ctrl<T> <quotedbl> <A> : "\xc3\x84" Adiaeresis
-Ctrl<T> <A> <asterisk> : "\xc3\x85" Aring
-Ctrl<T> <asterisk> <A> : "\xc3\x85" Aring
-Ctrl<T> <A> <E> : "\xc3\x86" AE
-Ctrl<T> <a> <grave> : "\xc3\xa0" agrave
-Ctrl<T> <grave> <a> : "\xc3\xa0" agrave
-Ctrl<T> <a> <acute> : "\xc3\xa1" aacute
-Ctrl<T> <acute> <a> : "\xc3\xa1" aacute
-Ctrl<T> <a> <apostrophe> : "\xc3\xa1" aacute
-Ctrl<T> <apostrophe> <a> : "\xc3\xa1" aacute
-Ctrl<T> <a> <asciicircum> : "\xc3\xa2" acircumflex
-Ctrl<T> <asciicircum> <a> : "\xc3\xa2" acircumflex
-Ctrl<T> <a> <greater> : "\xc3\xa2" acircumflex
-Ctrl<T> <greater> <a> : "\xc3\xa2" acircumflex
-Ctrl<T> <a> <asciitilde> : "\xc3\xa3" atilde
-Ctrl<T> <asciitilde> <a> : "\xc3\xa3" atilde
-Ctrl<T> <a> <minus> : "\xc3\xa3" atilde
-Ctrl<T> <minus> <a> : "\xc3\xa3" atilde
-Ctrl<T> <a> <quotedbl> : "\xc3\xa4" adiaeresis
-Ctrl<T> <quotedbl> <a> : "\xc3\xa4" adiaeresis
-Ctrl<T> <a> <asterisk> : "\xc3\xa5" aring
-Ctrl<T> <asterisk> <a> : "\xc3\xa5" aring
-Ctrl<T> <a> <e> : "\xc3\xa6" ae
-Ctrl<T> <C> <comma> : "\xc3\x87" Ccedilla
-Ctrl<T> <comma> <C> : "\xc3\x87" Ccedilla
-Ctrl<T> <c> <comma> : "\xc3\xa7" ccedilla
-Ctrl<T> <comma> <c> : "\xc3\xa7" ccedilla
-Ctrl<T> <minus> <D> : "\xc3\x90" ETH
-Ctrl<T> <D> <minus> : "\xc3\x90" ETH
-Ctrl<T> <minus> <d> : "\xc3\xb0" eth
-Ctrl<T> <d> <minus> : "\xc3\xb0" eth
-Ctrl<T> <E> <grave> : "\xc3\x88" Egrave
-Ctrl<T> <grave> <E> : "\xc3\x88" Egrave
-Ctrl<T> <E> <acute> : "\xc3\x89" Eacute
-Ctrl<T> <acute> <E> : "\xc3\x89" Eacute
-Ctrl<T> <E> <apostrophe> : "\xc3\x89" Eacute
-Ctrl<T> <apostrophe> <E> : "\xc3\x89" Eacute
-Ctrl<T> <E> <asciicircum> : "\xc3\x8a" Ecircumflex
-Ctrl<T> <asciicircum> <E> : "\xc3\x8a" Ecircumflex
-Ctrl<T> <E> <greater> : "\xc3\x8a" Ecircumflex
-Ctrl<T> <greater> <E> : "\xc3\x8a" Ecircumflex
-Ctrl<T> <E> <quotedbl> : "\xc3\x8b" Ediaeresis
-Ctrl<T> <quotedbl> <E> : "\xc3\x8b" Ediaeresis
-Ctrl<T> <e> <grave> : "\xc3\xa8" egrave
-Ctrl<T> <grave> <e> : "\xc3\xa8" egrave
-Ctrl<T> <e> <acute> : "\xc3\xa9" eacute
-Ctrl<T> <acute> <e> : "\xc3\xa9" eacute
-Ctrl<T> <e> <apostrophe> : "\xc3\xa9" eacute
-Ctrl<T> <apostrophe> <e> : "\xc3\xa9" eacute
-Ctrl<T> <e> <asciicircum> : "\xc3\xaa" ecircumflex
-Ctrl<T> <asciicircum> <e> : "\xc3\xaa" ecircumflex
-Ctrl<T> <e> <greater> : "\xc3\xaa" ecircumflex
-Ctrl<T> <greater> <e> : "\xc3\xaa" ecircumflex
-Ctrl<T> <e> <quotedbl> : "\xc3\xab" ediaeresis
-Ctrl<T> <quotedbl> <e> : "\xc3\xab" ediaeresis
-Ctrl<T> <I> <grave> : "\xc3\x8c" Igrave
-Ctrl<T> <grave> <I> : "\xc3\x8c" Igrave
-Ctrl<T> <I> <acute> : "\xc3\x8d" Iacute
-Ctrl<T> <acute> <I> : "\xc3\x8d" Iacute
-Ctrl<T> <I> <apostrophe> : "\xc3\x8d" Iacute
-Ctrl<T> <apostrophe> <I> : "\xc3\x8d" Iacute
-Ctrl<T> <I> <asciicircum> : "\xc3\x8e" Icircumflex
-Ctrl<T> <asciicircum> <I> : "\xc3\x8e" Icircumflex
-Ctrl<T> <I> <greater> : "\xc3\x8e" Icircumflex
-Ctrl<T> <greater> <I> : "\xc3\x8e" Icircumflex
-Ctrl<T> <I> <quotedbl> : "\xc3\x8f" Idiaeresis
-Ctrl<T> <quotedbl> <I> : "\xc3\x8f" Idiaeresis
-Ctrl<T> <i> <grave> : "\xc3\xac" igrave
-Ctrl<T> <grave> <i> : "\xc3\xac" igrave
-Ctrl<T> <i> <acute> : "\xc3\xad" iacute
-Ctrl<T> <acute> <i> : "\xc3\xad" iacute
-Ctrl<T> <i> <apostrophe> : "\xc3\xad" iacute
-Ctrl<T> <apostrophe> <i> : "\xc3\xad" iacute
-Ctrl<T> <i> <asciicircum> : "\xc3\xae" icircumflex
-Ctrl<T> <asciicircum> <i> : "\xc3\xae" icircumflex
-Ctrl<T> <i> <greater> : "\xc3\xae" icircumflex
-Ctrl<T> <greater> <i> : "\xc3\xae" icircumflex
-Ctrl<T> <i> <quotedbl> : "\xc3\xaf" idiaeresis
-Ctrl<T> <quotedbl> <i> : "\xc3\xaf" idiaeresis
-Ctrl<T> <N> <asciitilde> : "\xc3\x91" Ntilde
-Ctrl<T> <asciitilde> <N> : "\xc3\x91" Ntilde
-Ctrl<T> <N> <minus> : "\xc3\x91" Ntilde
-Ctrl<T> <minus> <N> : "\xc3\x91" Ntilde
-Ctrl<T> <n> <asciitilde> : "\xc3\xb1" ntilde
-Ctrl<T> <asciitilde> <n> : "\xc3\xb1" ntilde
-Ctrl<T> <n> <minus> : "\xc3\xb1" ntilde
-Ctrl<T> <minus> <n> : "\xc3\xb1" ntilde
-Ctrl<T> <O> <grave> : "\xc3\x92" Ograve
-Ctrl<T> <grave> <O> : "\xc3\x92" Ograve
-Ctrl<T> <O> <acute> : "\xc3\x93" Oacute
-Ctrl<T> <acute> <O> : "\xc3\x93" Oacute
-Ctrl<T> <O> <apostrophe> : "\xc3\x93" Oacute
-Ctrl<T> <apostrophe> <O> : "\xc3\x93" Oacute
-Ctrl<T> <O> <asciicircum> : "\xc3\x94" Ocircumflex
-Ctrl<T> <asciicircum> <O> : "\xc3\x94" Ocircumflex
-Ctrl<T> <O> <greater> : "\xc3\x94" Ocircumflex
-Ctrl<T> <greater> <O> : "\xc3\x94" Ocircumflex
-Ctrl<T> <O> <asciitilde> : "\xc3\x95" Otilde
-Ctrl<T> <asciitilde> <O> : "\xc3\x95" Otilde
-Ctrl<T> <O> <minus> : "\xc3\x95" Otilde
-Ctrl<T> <minus> <O> : "\xc3\x95" Otilde
-Ctrl<T> <O> <quotedbl> : "\xc3\x96" Odiaeresis
-Ctrl<T> <quotedbl> <O> : "\xc3\x96" Odiaeresis
-Ctrl<T> <O> <slash> : "\xc3\x98" Ooblique
-Ctrl<T> <slash> <O> : "\xc3\x98" Ooblique
-Ctrl<T> <o> <grave> : "\xc3\xb2" ograve
-Ctrl<T> <grave> <o> : "\xc3\xb2" ograve
-Ctrl<T> <o> <acute> : "\xc3\xb3" oacute
-Ctrl<T> <acute> <o> : "\xc3\xb3" oacute
-Ctrl<T> <o> <apostrophe> : "\xc3\xb3" oacute
-Ctrl<T> <apostrophe> <o> : "\xc3\xb3" oacute
-Ctrl<T> <o> <asciicircum> : "\xc3\xb4" ocircumflex
-Ctrl<T> <asciicircum> <o> : "\xc3\xb4" ocircumflex
-Ctrl<T> <o> <greater> : "\xc3\xb4" ocircumflex
-Ctrl<T> <greater> <o> : "\xc3\xb4" ocircumflex
-Ctrl<T> <o> <asciitilde> : "\xc3\xb5" otilde
-Ctrl<T> <asciitilde> <o> : "\xc3\xb5" otilde
-Ctrl<T> <o> <minus> : "\xc3\xb5" otilde
-Ctrl<T> <minus> <o> : "\xc3\xb5" otilde
-Ctrl<T> <o> <quotedbl> : "\xc3\xb6" odiaeresis
-Ctrl<T> <quotedbl> <o> : "\xc3\xb6" odiaeresis
-Ctrl<T> <o> <slash> : "\xc3\xb8" oslash
-Ctrl<T> <slash> <o> : "\xc3\xb8" oslash
-Ctrl<T> <U> <grave> : "\xc3\x99" Ugrave
-Ctrl<T> <grave> <U> : "\xc3\x99" Ugrave
-Ctrl<T> <U> <acute> : "\xc3\x9a" Uacute
-Ctrl<T> <acute> <U> : "\xc3\x9a" Uacute
-Ctrl<T> <U> <apostrophe> : "\xc3\x9a" Uacute
-Ctrl<T> <apostrophe> <U> : "\xc3\x9a" Uacute
-Ctrl<T> <U> <asciicircum> : "\xc3\x9b" Ucircumflex
-Ctrl<T> <asciicircum> <U> : "\xc3\x9b" Ucircumflex
-Ctrl<T> <U> <greater> : "\xc3\x9b" Ucircumflex
-Ctrl<T> <greater> <U> : "\xc3\x9b" Ucircumflex
-Ctrl<T> <U> <quotedbl> : "\xc3\x9c" Udiaeresis
-Ctrl<T> <quotedbl> <U> : "\xc3\x9c" Udiaeresis
-Ctrl<T> <u> <grave> : "\xc3\xb9" ugrave
-Ctrl<T> <grave> <u> : "\xc3\xb9" ugrave
-Ctrl<T> <u> <acute> : "\xc3\xba" uacute
-Ctrl<T> <acute> <u> : "\xc3\xba" uacute
-Ctrl<T> <u> <apostrophe> : "\xc3\xba" uacute
-Ctrl<T> <apostrophe> <u> : "\xc3\xba" uacute
-Ctrl<T> <u> <asciicircum> : "\xc3\xbb" ucircumflex
-Ctrl<T> <asciicircum> <u> : "\xc3\xbb" ucircumflex
-Ctrl<T> <u> <greater> : "\xc3\xbb" ucircumflex
-Ctrl<T> <greater> <u> : "\xc3\xbb" ucircumflex
-Ctrl<T> <u> <quotedbl> : "\xc3\xbc" udiaeresis
-Ctrl<T> <quotedbl> <u> : "\xc3\xbc" udiaeresis
-Ctrl<T> <s> <s> : "\xc3\x9f" ssharp
-Ctrl<T> <T> <H> : "\xc3\x9e" THORN
-Ctrl<T> <t> <h> : "\xc3\xbe" thorn
-Ctrl<T> <Y> <acute> : "\xc3\x9d" Yacute
-Ctrl<T> <acute> <Y> : "\xc3\x9d" Yacute
-Ctrl<T> <Y> <apostrophe> : "\xc3\x9d" Yacute
-Ctrl<T> <apostrophe> <Y> : "\xc3\x9d" Yacute
-Ctrl<T> <y> <acute> : "\xc3\xbd" yacute
-Ctrl<T> <acute> <y> : "\xc3\xbd" yacute
-Ctrl<T> <y> <apostrophe> : "\xc3\xbd" yacute
-Ctrl<T> <apostrophe> <y> : "\xc3\xbd" yacute
-Ctrl<T> <y> <quotedbl> : "\xc3\xbf" ydiaeresis
-Ctrl<T> <quotedbl> <y> : "\xc3\xbf" ydiaeresis
-# turkish
-<Multi_key> <G> <u> : "\xc4\x9e" Gbreve
-<Multi_key> <u> <G> : "\xc4\x9e" Gbreve
-<Multi_key> <g> <u> : "\xc4\x9f" gbreve
-<Multi_key> <u> <g> : "\xc4\x9f" gbreve
-<Multi_key> <I> <period> : "\xc4\xb0" Iabovedot
-<Multi_key> <period> <I> : "\xc4\xb0" Iabovedot
-<Multi_key> <i> <period> : "\xc4\xb1" idotless
-<Multi_key> <period> <i> : "\xc4\xb1" idotless
-# polish
-<Multi_key> <space> <breve> : "\xcb\x98" breve
-<Multi_key> <space> <degree> : "\xc2\xb0" degree
-<Multi_key> <space> <ogonek> : "\xcb\x9b" ogonek
-<Multi_key> <space> <caron> : "\xcb\x87" caron
-<Multi_key> <space> <v> : "\xcb\x87" caron
-<Multi_key> <space> <doubleacute> : "\xcb\x9d" doubleacute
-<Multi_key> <diaeresis> <A> : "\xc3\x84" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\xc3\x84" Adiaeresis
-<Multi_key> <diaeresis> <E> : "\xc3\x8b" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\xc3\x8b" Ediaeresis
-<Multi_key> <diaeresis> <O> : "\xc3\x96" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\xc3\x96" Odiaeresis
-<Multi_key> <diaeresis> <U> : "\xc3\x9c" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\xc3\x9c" Udiaeresis
-<Multi_key> <diaeresis> <a> : "\xc3\xa4" adiaeresis
-<Multi_key> <a> <diaeresis> : "\xc3\xa4" adiaeresis
-<Multi_key> <diaeresis> <e> : "\xc3\xab" ediaeresis
-<Multi_key> <e> <diaeresis> : "\xc3\xab" ediaeresis
-<Multi_key> <diaeresis> <o> : "\xc3\xb6" odiaeresis
-<Multi_key> <o> <diaeresis> : "\xc3\xb6" odiaeresis
-<Multi_key> <diaeresis> <u> : "\xc3\xbc" udiaeresis
-<Multi_key> <u> <diaeresis> : "\xc3\xbc" udiaeresis
-<Multi_key> <acute> <R> : "\xc5\x94" Racute
-<Multi_key> <R> <acute> : "\xc5\x94" Racute
-<Multi_key> <acute> <S> : "\xc5\x9a" Sacute
-<Multi_key> <S> <acute> : "\xc5\x9a" Sacute
-<Multi_key> <acute> <Z> : "\xc4\xbe" Zacute
-<Multi_key> <Z> <acute> : "\xc4\xbe" Zacute
-<Multi_key> <acute> <n> : "\xc5\x84" nacute
-<Multi_key> <n> <acute> : "\xc5\x84" nacute
-<Multi_key> <acute> <r> : "\xc5\x95" racute
-<Multi_key> <r> <acute> : "\xc5\x95" racute
-<Multi_key> <acute> <s> : "\xc5\x9b" sacute
-<Multi_key> <s> <acute> : "\xc5\x9b" sacute
-<Multi_key> <acute> <z> : "\xc5\xba" zacute
-<Multi_key> <z> <acute> : "\xc5\xba" zacute
-<Multi_key> <0> <O> : "\xc2\xb0" degree
-<Multi_key> <o> <o> : "\xc2\xb0" degree
-<Multi_key> <comma> <S> : "\xc5\x9e" Scedilla
-<Multi_key> <S> <comma> : "\xc5\x9e" Scedilla
-<Multi_key> <comma> <T> : "\xc5\xa2" Tcedilla
-<Multi_key> <T> <comma> : "\xc5\xa2" Tcedilla
-<Multi_key> <comma> <s> : "\xc5\x9f" scedilla
-<Multi_key> <s> <comma> : "\xc5\x9f" scedilla
-<Multi_key> <comma> <t> : "\xc5\xa3" tcedilla
-<Multi_key> <t> <comma> : "\xc5\xa3" tcedilla
-<Multi_key> <caron> <C> : "\xc4\x8c" Ccaron
-<Multi_key> <C> <caron> : "\xc4\x8c" Ccaron
-<Multi_key> <caron> <D> : "\xc4\x8e" Dcaron
-<Multi_key> <D> <caron> : "\xc4\x8e" Dcaron
-<Multi_key> <caron> <E> : "\xc4\x9a" Ecaron
-<Multi_key> <E> <caron> : "\xc4\x9a" Ecaron
-<Multi_key> <caron> <L> : "\xc4\xbd" Lcaron
-<Multi_key> <L> <caron> : "\xc4\xbd" Lcaron
-<Multi_key> <caron> <N> : "\xc5\x87" Ncaron
-<Multi_key> <N> <caron> : "\xc5\x87" Ncaron
-<Multi_key> <caron> <R> : "\xc5\x98" Rcaron
-<Multi_key> <R> <caron> : "\xc5\x98" Rcaron
-<Multi_key> <caron> <S> : "\xc5\xa0" Scaron
-<Multi_key> <S> <caron> : "\xc5\xa0" Scaron
-<Multi_key> <caron> <T> : "\xc5\xa4" Tcaron
-<Multi_key> <T> <caron> : "\xc5\xa4" Tcaron
-<Multi_key> <caron> <U> : "\xc5\xae" Uring
-<Multi_key> <U> <caron> : "\xc5\xae" Uring
-<Multi_key> <caron> <c> : "\xc4\x8d" ccaron
-<Multi_key> <c> <caron> : "\xc4\x8d" ccaron
-<Multi_key> <caron> <d> : "\xc4\x8f" dcaron
-<Multi_key> <d> <caron> : "\xc4\x8f" dcaron
-<Multi_key> <caron> <e> : "\xc4\x9b" ecaron
-<Multi_key> <e> <caron> : "\xc4\x9b" ecaron
-<Multi_key> <caron> <l> : "\xc4\xbe" lcaron
-<Multi_key> <l> <caron> : "\xc4\xbe" lcaron
-<Multi_key> <caron> <n> : "\xc5\x88" ncaron
-<Multi_key> <n> <caron> : "\xc5\x88" ncaron
-<Multi_key> <caron> <r> : "\xc5\x99" rcaron
-<Multi_key> <r> <caron> : "\xc5\x99" rcaron
-<Multi_key> <caron> <s> : "\xc5\xa1" scaron
-<Multi_key> <s> <caron> : "\xc5\xa1" scaron
-<Multi_key> <caron> <t> : "\xc5\xa5" tcaron
-<Multi_key> <t> <caron> : "\xc5\xa5" tcaron
-<Multi_key> <caron> <u> : "\xc5\xaf" uring
-<Multi_key> <u> <caron> : "\xc5\xaf" uring
-<Multi_key> <v> <C> : "\xc4\x8c" Ccaron
-<Multi_key> <C> <v> : "\xc4\x8c" Ccaron
-<Multi_key> <v> <D> : "\xc4\x8e" Dcaron
-<Multi_key> <D> <v> : "\xc4\x8e" Dcaron
-<Multi_key> <v> <E> : "\xc4\x9a" Ecaron
-<Multi_key> <E> <v> : "\xc4\x9a" Ecaron
-<Multi_key> <v> <N> : "\xc5\x87" Ncaron
-<Multi_key> <N> <v> : "\xc5\x87" Ncaron
-<Multi_key> <v> <R> : "\xc5\x98" Rcaron
-<Multi_key> <R> <v> : "\xc5\x98" Rcaron
-<Multi_key> <v> <T> : "\xc5\xa4" Tcaron
-<Multi_key> <T> <v> : "\xc5\xa4" Tcaron
-<Multi_key> <v> <U> : "\xc5\xae" Uring
-<Multi_key> <U> <v> : "\xc5\xae" Uring
-<Multi_key> <v> <c> : "\xc4\x8d" ccaron
-<Multi_key> <c> <v> : "\xc4\x8d" ccaron
-<Multi_key> <v> <d> : "\xc4\x8f" dcaron
-<Multi_key> <d> <v> : "\xc4\x8f" dcaron
-<Multi_key> <v> <e> : "\xc4\x9b" ecaron
-<Multi_key> <e> <v> : "\xc4\x9b" ecaron
-<Multi_key> <v> <n> : "\xc5\x88" ncaron
-<Multi_key> <n> <v> : "\xc5\x88" ncaron
-<Multi_key> <v> <r> : "\xc5\x99" rcaron
-<Multi_key> <r> <v> : "\xc5\x99" rcaron
-<Multi_key> <v> <t> : "\xc5\xa5" tcaron
-<Multi_key> <t> <v> : "\xc5\xa5" tcaron
-<Multi_key> <v> <u> : "\xc5\xaf" uring
-<Multi_key> <u> <v> : "\xc5\xaf" uring
-<Multi_key> <breve> <A> : "\xc4\x82" Abreve
-<Multi_key> <A> <breve> : "\xc4\x82" Abreve
-<Multi_key> <breve> <a> : "\xc4\x83" abreve
-<Multi_key> <a> <breve> : "\xc4\x83" abreve
-<Multi_key> <ogonek> <A> : "\xc4\x84" Aogonek
-<Multi_key> <A> <ogonek> : "\xc4\x84" Aogonek
-<Multi_key> <ogonek> <E> : "\xc4\x98" Eogonek
-<Multi_key> <E> <ogonek> : "\xc4\x98" Eogonek
-<Multi_key> <ogonek> <a> : "\xc4\x85" aogonek
-<Multi_key> <a> <ogonek> : "\xc4\x85" aogonek
-<Multi_key> <ogonek> <e> : "\xc4\x99" eogonek
-<Multi_key> <e> <ogonek> : "\xc4\x99" eogonek
-<Multi_key> <E> <a> : "\xc4\x98" Eogonek
-<Multi_key> <e> <a> : "\xc4\x99" eogonek
-<Multi_key> <doubleacute> <O> : "\xc5\x90" Odoubleacute
-<Multi_key> <O> <doubleacute> : "\xc5\x90" Odoubleacute
-<Multi_key> <doubleacute> <U> : "\xc5\xb0" Udoubleacute
-<Multi_key> <U> <doubleacute> : "\xc5\xb0" Udoubleacute
-<Multi_key> <doubleacute> <o> : "\xc5\x91" odoubleacute
-<Multi_key> <o> <doubleacute> : "\xc5\x91" odoubleacute
-<Multi_key> <doubleacute> <u> : "\xc5\xb1" udoubleacute
-<Multi_key> <u> <doubleacute> : "\xc5\xb1" udoubleacute
-<Multi_key> <period> <U> : "\xc5\xae" Uring
-<Multi_key> <U> <period> : "\xc5\xae" Uring
-<Multi_key> <period> <u> : "\xc5\xaf" uring
-<Multi_key> <u> <period> : "\xc5\xaf" uring
-<Multi_key> <period> <z> : "\xc5\xbc" zabovedot
-<Multi_key> <z> <period> : "\xc5\xbc" zabovedot
-<Multi_key> <period> <Z> : "\xc5\xbb" Zabovedot
-<Multi_key> <Z> <period> : "\xc5\xbb" Zabovedot
-<acute> <A> : "\xc3\x81" Aacute
-<acute> <C> : "\xc4\x86" Cacute
-<acute> <E> : "\xc3\x89" Eacute
-<acute> <I> : "\xc3\x8d" Iacute
-<acute> <L> : "\xc4\xb9" Lacute
-<acute> <N> : "\xc5\x83" Nacute
-<acute> <O> : "\xc3\x93" Oacute
-<acute> <R> : "\xc5\x94" Racute
-<acute> <S> : "\xc5\x9a" Sacute
-<acute> <U> : "\xc3\x9a" Uacute
-<acute> <Y> : "\xc3\x9d" Yacute
-<acute> <Z> : "\xc4\xbe" Zacute
-<acute> <a> : "\xc3\xa1" aacute
-<acute> <c> : "\xc4\x87" cacute
-<acute> <e> : "\xc3\xa9" eacute
-<acute> <i> : "\xc3\xad" iacute
-<acute> <l> : "\xc4\xba" lacute
-<acute> <n> : "\xc5\x84" nacute
-<acute> <o> : "\xc3\xb3" oacute
-<acute> <r> : "\xc5\x95" racute
-<acute> <s> : "\xc5\x9b" sacute
-<acute> <u> : "\xc3\xba" uacute
-<acute> <y> : "\xc3\xbd" yacute
-<acute> <z> : "\xc5\xba" zacute
-<diaeresis> <A> : "\xc3\x84" Adiaeresis
-<diaeresis> <E> : "\xc3\x8b" Ediaeresis
-<diaeresis> <O> : "\xc3\x96" Odiaeresis
-<diaeresis> <U> : "\xc3\x9c" Udiaeresis
-<diaeresis> <a> : "\xc3\xa4" adiaeresis
-<diaeresis> <e> : "\xc3\xab" ediaeresis
-<diaeresis> <o> : "\xc3\xb6" odiaeresis
-<diaeresis> <u> : "\xc3\xbc" udiaeresis
-#
-# Additional latin-2 sequences
-<Multi_key> <a> <space> : "\xcb\x9b" ogonek
-<Multi_key> <u> <space> : "\xcb\x98" breve
-<Multi_key> <v> <space> : "\xcb\x87" caron
-<Multi_key> <quotedbl> <space> : "\xcb\x9d" doubleacute
-<Multi_key> <A> <u> : "\xc4\x82" Abreve
-<Multi_key> <C> <apostrophe> : "\xc4\x86" Cacute
-<Multi_key> <L> <apostrophe> : "\xc4\xb9" Lacute
-<Multi_key> <L> <slash> : "\xc5\x81" Lstroke
-<Multi_key> <L> <greater> : "\xc4\xbd" Lcaron
-<Multi_key> <N> <apostrophe> : "\xc5\x83" Nacute
-<Multi_key> <S> <apostrophe> : "\xc5\x9a" Sacute
-<Multi_key> <R> <apostrophe> : "\xc5\x94" Racute
-<Multi_key> <U> <asterisk> : "\xc5\xae" Uring
-<Multi_key> <Z> <apostrophe> : "\xc5\xb9" Zacute
-<Multi_key> <a> <u> : "\xc4\x83" abreve
-<Multi_key> <c> <apostrophe> : "\xc4\x87" cacute
-<Multi_key> <l> <apostrophe> : "\xc4\xba" lacute
-<Multi_key> <l> <slash> : "\xc5\x82" lstroke
-<Multi_key> <l> <greater> : "\xc4\xbe" lcaron
-<Multi_key> <n> <apostrophe> : "\xc5\x84" nacute
-<Multi_key> <s> <apostrophe> : "\xc5\x9b" sacute
-<Multi_key> <r> <apostrophe> : "\xc5\x95" racute
-<Multi_key> <u> <asterisk> : "\xc5\xaf" uring
-<Multi_key> <z> <apostrophe> : "\xc5\xba" zacute
-#
-# Latin-4 sequences
-<Multi_key> <N> <N> : "\xc5\x8a" ENG
-<Multi_key> <U> <a> : "\xc5\xb2" Uogonek
-<Multi_key> <u> <a> : "\xc5\xb3" uogonek
-<Multi_key> <k> <k> : "\xc4\xb8" kra
-<Multi_key> <R> <comma> : "\xc5\x96" Rcedilla
-<Multi_key> <comma> <R> : "\xc5\x96" Rcedilla
-<Multi_key> <r> <comma> : "\xc5\x97" rcedilla
-<Multi_key> <comma> <r> : "\xc5\x97" rcedilla
-<Multi_key> <I> <asciitilde> : "\xc4\xa8" Itilde
-<Multi_key> <asciitilde> <I> : "\xc4\xa8" Itilde
-<Multi_key> <i> <asciitilde> : "\xc4\xa9" itilde
-<Multi_key> <asciitilde> <i> : "\xc4\xa9" itilde
-<Multi_key> <L> <comma> : "\xc4\xbb" Lcedilla
-<Multi_key> <comma> <L> : "\xc4\xbb" Lcedilla
-<Multi_key> <l> <comma> : "\xc4\xbc" lcedilla
-<Multi_key> <comma> <l> : "\xc4\xbc" lcedilla
-<diaeresis> : "\xc2\xa8" diaeresis
-<Multi_key> <S> <v> : "\xc5\xa0" Scaron
-<Multi_key> <S> <V> : "\xc5\xa0" Scaron
-<Multi_key> <v> <S> : "\xc5\xa0" Scaron
-<Multi_key> <V> <S> : "\xc5\xa0" Scaron
-<Multi_key> <s> <v> : "\xc5\xa1" scaron
-<Multi_key> <s> <V> : "\xc5\xa1" scaron
-<Multi_key> <v> <s> : "\xc5\xa1" scaron
-<Multi_key> <V> <s> : "\xc5\xa1" scaron
-<Multi_key> <E> <underscore> : "\xc4\x92" Emacron
-<Multi_key> <underscore> <E> : "\xc4\x92" Emacron
-<Multi_key> <e> <underscore> : "\xc4\x93" emacron
-<Multi_key> <underscore> <e> : "\xc4\x93" emacron
-<Multi_key> <G> <comma> : "\xc4\xa2" Gcedilla
-<Multi_key> <comma> <G> : "\xc4\xa2" Gcedilla
-<Multi_key> <g> <comma> : "\xc4\xa3" gcedilla
-<Multi_key> <comma> <g> : "\xc4\xa3" gcedilla
-<Multi_key> <T> <bar> : "\xc5\xa6" Tslash
-<Multi_key> <bar> <T> : "\xc5\xa6" Tslash
-<Multi_key> <t> <bar> : "\xc5\xa7" tslash
-<Multi_key> <bar> <t> : "\xc5\xa7" tslash
-<Multi_key> <n> <n> : "\xc5\x8b" eng
-<Multi_key> <A> <underscore> : "\xc4\x80" Amacron
-<Multi_key> <underscore> <A> : "\xc4\x80" Amacron
-<Multi_key> <a> <underscore> : "\xc4\x81" amacron
-<Multi_key> <underscore> <a> : "\xc4\x81" amacron
-<Multi_key> <d> <underscore> : "\xc4\x91"
-<Multi_key> <underscore> <d> : "\xc4\x91"
-<Multi_key> <N> <comma> : "\xc5\x85" Ncedilla
-<Multi_key> <comma> <N> : "\xc5\x85" Ncedilla
-<Multi_key> <n> <comma> : "\xc5\x86" ncedilla
-<Multi_key> <comma> <n> : "\xc5\x86" ncedilla
-<Multi_key> <O> <underscore> : "\xc5\x8c" Omacron
-<Multi_key> <underscore> <O> : "\xc5\x8c" Omacron
-<Multi_key> <o> <underscore> : "\xc5\x8d" omacron
-<Multi_key> <underscore> <o> : "\xc5\x8d" omacron
-<Multi_key> <K> <comma> : "\xc4\xb6" Kcedilla
-<Multi_key> <comma> <K> : "\xc4\xb6" Kcedilla
-<Multi_key> <k> <comma> : "\xc4\xb7" kcedilla
-<Multi_key> <comma> <k> : "\xc4\xb7" kcedilla
-<Multi_key> <I> <a> : "\xc4\xae" Iogonek
-<Multi_key> <a> <I> : "\xc4\xae" Iogonek
-<Multi_key> <i> <a> : "\xc4\xaf" iogonek
-<Multi_key> <a> <i> : "\xc4\xaf" iogonek
-<Multi_key> <E> <period> : "\xc4\x96" Eabovedot
-<Multi_key> <e> <period> : "\xc4\x97" eabovedot
-<Multi_key> <U> <asciitilde> : "\xc5\xa8" Utilde
-<Multi_key> <asciitilde> <U> : "\xc5\xa8" Utilde
-<Multi_key> <u> <asciitilde> : "\xc5\xa9" utilde
-<Multi_key> <asciitilde> <u> : "\xc5\xa9" utilde
-<Multi_key> <U> <underscore> : "\xc5\xaa" Umacron
-<Multi_key> <underscore> <U> : "\xc5\xaa" Umacron
-<Multi_key> <u> <underscore> : "\xc5\xab" umacron
-<Multi_key> <underscore> <u> : "\xc5\xab" umacron
-<Multi_key> <I> <underscore> : "\xc4\xaa" Imacron
-<Multi_key> <underscore> <I> : "\xc4\xaa" Imacron
-<Multi_key> <i> <underscore> : "\xc4\xab" imacron
-<Multi_key> <underscore> <i> : "\xc4\xab" imacron
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
-# Ctrl<T> combo
-Ctrl<T> <a> <A> : "\xc4\x84" Aogonek
-Ctrl<T> <A> <a> : "\xc4\x84" Aogonek
-Ctrl<T> <a> <a> : "\xc4\x85" aogonek
-Ctrl<T> <C> <acute> : "\xc4\x86" Cacute
-Ctrl<T> <c> <acute> : "\xc4\x87" cacute
-Ctrl<T> <acute> <C> : "\xc4\x86" Cacute
-Ctrl<T> <acute> <c> : "\xc4\x87" cacute
-Ctrl<T> <acute> <N> : "\xc5\x83" Nacute
-Ctrl<T> <N> <acute> : "\xc5\x83" Nacute
-#Ctrl<T> <minus> <D> : "\xc3\x90" ETH
-#Ctrl<T> <minus> <d> : "\xc3\xb0" eth
-Ctrl<T> <slash> <D> : "\xc4\x90" Dstroke
-Ctrl<T> <slash> <d> : "\xc4\x91" dstroke
-Ctrl<T> <caron> <Z> : "\xc5\xbd" Zcaron
-Ctrl<T> <Z> <caron> : "\xc5\xbd" Zcaron
-Ctrl<T> <v> <Z> : "\xc5\xbd" Zcaron
-Ctrl<T> <Z> <v> : "\xc5\xbd" Zcaron
-Ctrl<T> <caron> <z> : "\xc5\xbe" zcaron
-Ctrl<T> <z> <caron> : "\xc5\xbe" zcaron
-Ctrl<T> <z> <v> : "\xc5\xbe" zcaron
-Ctrl<T> <v> <z> : "\xc5\xbe" zcaron
-Ctrl<T> <G> <u> : "\xc4\x9e" Gbreve
-Ctrl<T> <u> <G> : "\xc4\x9e" Gbreve
-Ctrl<T> <g> <u> : "\xc4\x9f" gbreve
-Ctrl<T> <u> <g> : "\xc4\x9f" gbreve
-Ctrl<T> <I> <period> : "\xc4\xb0" Iabovedot
-Ctrl<T> <period> <I> : "\xc4\xb0" Iabovedot
-Ctrl<T> <i> <period> : "\xc4\xb1" idotless
-Ctrl<T> <period> <i> : "\xc4\xb1" idotless
-Ctrl<T> <space> <breve> : "\xcb\x98" breve
-Ctrl<T> <space> <degree> : "\xc2\xb0" degree
-Ctrl<T> <space> <ogonek> : "\xcb\x9b" ogonek
-Ctrl<T> <space> <caron> : "\xcb\x87" caron
-Ctrl<T> <space> <v> : "\xcb\x87" caron
-Ctrl<T> <space> <doubleacute> : "\xcb\x9d" doubleacute
-Ctrl<T> <diaeresis> <A> : "\xc3\x84" Adiaeresis
-Ctrl<T> <A> <diaeresis> : "\xc3\x84" Adiaeresis
-Ctrl<T> <diaeresis> <E> : "\xc3\x8b" Ediaeresis
-Ctrl<T> <E> <diaeresis> : "\xc3\x8b" Ediaeresis
-Ctrl<T> <diaeresis> <O> : "\xc3\x96" Odiaeresis
-Ctrl<T> <O> <diaeresis> : "\xc3\x96" Odiaeresis
-Ctrl<T> <diaeresis> <U> : "\xc3\x9c" Udiaeresis
-Ctrl<T> <U> <diaeresis> : "\xc3\x9c" Udiaeresis
-Ctrl<T> <diaeresis> <a> : "\xc3\xa4" adiaeresis
-Ctrl<T> <a> <diaeresis> : "\xc3\xa4" adiaeresis
-Ctrl<T> <diaeresis> <e> : "\xc3\xab" ediaeresis
-Ctrl<T> <e> <diaeresis> : "\xc3\xab" ediaeresis
-Ctrl<T> <diaeresis> <o> : "\xc3\xb6" odiaeresis
-Ctrl<T> <o> <diaeresis> : "\xc3\xb6" odiaeresis
-Ctrl<T> <diaeresis> <u> : "\xc3\xbc" udiaeresis
-Ctrl<T> <u> <diaeresis> : "\xc3\xbc" udiaeresis
-Ctrl<T> <acute> <R> : "\xc5\x94" Racute
-Ctrl<T> <R> <acute> : "\xc5\x94" Racute
-Ctrl<T> <acute> <S> : "\xc5\x9a" Sacute
-Ctrl<T> <S> <acute> : "\xc5\x9a" Sacute
-Ctrl<T> <acute> <Z> : "\xc4\xbe" Zacute
-Ctrl<T> <Z> <acute> : "\xc4\xbe" Zacute
-Ctrl<T> <acute> <n> : "\xc5\x84" nacute
-Ctrl<T> <n> <acute> : "\xc5\x84" nacute
-Ctrl<T> <acute> <r> : "\xc5\x95" racute
-Ctrl<T> <r> <acute> : "\xc5\x95" racute
-Ctrl<T> <acute> <s> : "\xc5\x9b" sacute
-Ctrl<T> <s> <acute> : "\xc5\x9b" sacute
-Ctrl<T> <acute> <z> : "\xc5\xba" zacute
-Ctrl<T> <z> <acute> : "\xc5\xba" zacute
-Ctrl<T> <0> <O> : "\xc2\xb0" degree
-Ctrl<T> <o> <o> : "\xc2\xb0" degree
-Ctrl<T> <comma> <S> : "\xc5\x9e" Scedilla
-Ctrl<T> <S> <comma> : "\xc5\x9e" Scedilla
-Ctrl<T> <comma> <T> : "\xc5\xa2" Tcedilla
-Ctrl<T> <T> <comma> : "\xc5\xa2" Tcedilla
-Ctrl<T> <comma> <s> : "\xc5\x9f" scedilla
-Ctrl<T> <s> <comma> : "\xc5\x9f" scedilla
-Ctrl<T> <comma> <t> : "\xc5\xa3" tcedilla
-Ctrl<T> <t> <comma> : "\xc5\xa3" tcedilla
-Ctrl<T> <caron> <C> : "\xc4\x8c" Ccaron
-Ctrl<T> <C> <caron> : "\xc4\x8c" Ccaron
-Ctrl<T> <caron> <D> : "\xc4\x8e" Dcaron
-Ctrl<T> <D> <caron> : "\xc4\x8e" Dcaron
-Ctrl<T> <caron> <E> : "\xc4\x9a" Ecaron
-Ctrl<T> <E> <caron> : "\xc4\x9a" Ecaron
-Ctrl<T> <caron> <L> : "\xc4\xbd" Lcaron
-Ctrl<T> <L> <caron> : "\xc4\xbd" Lcaron
-Ctrl<T> <caron> <N> : "\xc5\x87" Ncaron
-Ctrl<T> <N> <caron> : "\xc5\x87" Ncaron
-Ctrl<T> <caron> <R> : "\xc5\x98" Rcaron
-Ctrl<T> <R> <caron> : "\xc5\x98" Rcaron
-Ctrl<T> <caron> <S> : "\xc5\xa0" Scaron
-Ctrl<T> <S> <caron> : "\xc5\xa0" Scaron
-Ctrl<T> <caron> <T> : "\xc5\xa4" Tcaron
-Ctrl<T> <T> <caron> : "\xc5\xa4" Tcaron
-Ctrl<T> <caron> <U> : "\xc5\xae" Uring
-Ctrl<T> <U> <caron> : "\xc5\xae" Uring
-Ctrl<T> <caron> <c> : "\xc4\x8d" ccaron
-Ctrl<T> <c> <caron> : "\xc4\x8d" ccaron
-Ctrl<T> <caron> <d> : "\xc4\x8f" dcaron
-Ctrl<T> <d> <caron> : "\xc4\x8f" dcaron
-Ctrl<T> <caron> <e> : "\xc4\x9b" ecaron
-Ctrl<T> <e> <caron> : "\xc4\x9b" ecaron
-Ctrl<T> <caron> <l> : "\xc4\xbe" lcaron
-Ctrl<T> <l> <caron> : "\xc4\xbe" lcaron
-Ctrl<T> <caron> <n> : "\xc5\x88" ncaron
-Ctrl<T> <n> <caron> : "\xc5\x88" ncaron
-Ctrl<T> <caron> <r> : "\xc5\x99" rcaron
-Ctrl<T> <r> <caron> : "\xc5\x99" rcaron
-Ctrl<T> <caron> <s> : "\xc5\xa1" scaron
-Ctrl<T> <s> <caron> : "\xc5\xa1" scaron
-Ctrl<T> <caron> <t> : "\xc5\xa5" tcaron
-Ctrl<T> <t> <caron> : "\xc5\xa5" tcaron
-Ctrl<T> <caron> <u> : "\xc5\xaf" uring
-Ctrl<T> <u> <caron> : "\xc5\xaf" uring
-Ctrl<T> <v> <C> : "\xc4\x8c" Ccaron
-Ctrl<T> <C> <v> : "\xc4\x8c" Ccaron
-Ctrl<T> <v> <D> : "\xc4\x8e" Dcaron
-Ctrl<T> <D> <v> : "\xc4\x8e" Dcaron
-Ctrl<T> <v> <E> : "\xc4\x9a" Ecaron
-Ctrl<T> <E> <v> : "\xc4\x9a" Ecaron
-Ctrl<T> <v> <N> : "\xc5\x87" Ncaron
-Ctrl<T> <N> <v> : "\xc5\x87" Ncaron
-Ctrl<T> <v> <R> : "\xc5\x98" Rcaron
-Ctrl<T> <R> <v> : "\xc5\x98" Rcaron
-Ctrl<T> <v> <T> : "\xc5\xa4" Tcaron
-Ctrl<T> <T> <v> : "\xc5\xa4" Tcaron
-Ctrl<T> <v> <U> : "\xc5\xae" Uring
-Ctrl<T> <U> <v> : "\xc5\xae" Uring
-Ctrl<T> <v> <c> : "\xc4\x8d" ccaron
-Ctrl<T> <c> <v> : "\xc4\x8d" ccaron
-Ctrl<T> <v> <d> : "\xc4\x8f" dcaron
-Ctrl<T> <d> <v> : "\xc4\x8f" dcaron
-Ctrl<T> <v> <e> : "\xc4\x9b" ecaron
-Ctrl<T> <e> <v> : "\xc4\x9b" ecaron
-Ctrl<T> <v> <n> : "\xc5\x88" ncaron
-Ctrl<T> <n> <v> : "\xc5\x88" ncaron
-Ctrl<T> <v> <r> : "\xc5\x99" rcaron
-Ctrl<T> <r> <v> : "\xc5\x99" rcaron
-Ctrl<T> <v> <t> : "\xc5\xa5" tcaron
-Ctrl<T> <t> <v> : "\xc5\xa5" tcaron
-Ctrl<T> <v> <u> : "\xc5\xaf" uring
-Ctrl<T> <u> <v> : "\xc5\xaf" uring
-Ctrl<T> <breve> <A> : "\xc4\x82" Abreve
-Ctrl<T> <A> <breve> : "\xc4\x82" Abreve
-Ctrl<T> <breve> <a> : "\xc4\x83" abreve
-Ctrl<T> <a> <breve> : "\xc4\x83" abreve
-Ctrl<T> <ogonek> <A> : "\xc4\x84" Aogonek
-Ctrl<T> <A> <ogonek> : "\xc4\x84" Aogonek
-Ctrl<T> <ogonek> <E> : "\xc4\x98" Eogonek
-Ctrl<T> <E> <ogonek> : "\xc4\x98" Eogonek
-Ctrl<T> <ogonek> <a> : "\xc4\x85" aogonek
-Ctrl<T> <a> <ogonek> : "\xc4\x85" aogonek
-Ctrl<T> <ogonek> <e> : "\xc4\x99" eogonek
-Ctrl<T> <e> <ogonek> : "\xc4\x99" eogonek
-Ctrl<T> <E> <a> : "\xc4\x98" Eogonek
-Ctrl<T> <e> <a> : "\xc4\x99" eogonek
-Ctrl<T> <doubleacute> <O> : "\xc5\x90" Odoubleacute
-Ctrl<T> <O> <doubleacute> : "\xc5\x90" Odoubleacute
-Ctrl<T> <doubleacute> <U> : "\xc5\xb0" Udoubleacute
-Ctrl<T> <U> <doubleacute> : "\xc5\xb0" Udoubleacute
-Ctrl<T> <doubleacute> <o> : "\xc5\x91" odoubleacute
-Ctrl<T> <o> <doubleacute> : "\xc5\x91" odoubleacute
-Ctrl<T> <doubleacute> <u> : "\xc5\xb1" udoubleacute
-Ctrl<T> <u> <doubleacute> : "\xc5\xb1" udoubleacute
-Ctrl<T> <period> <U> : "\xc5\xae" Uring
-Ctrl<T> <U> <period> : "\xc5\xae" Uring
-Ctrl<T> <period> <u> : "\xc5\xaf" uring
-Ctrl<T> <u> <period> : "\xc5\xaf" uring
-Ctrl<T> <period> <z> : "\xc5\xbc" zabovedot
-Ctrl<T> <z> <period> : "\xc5\xbc" zabovedot
-Ctrl<T> <period> <Z> : "\xc5\xbb" Zabovedot
-Ctrl<T> <Z> <period> : "\xc5\xbb" Zabovedot
-Ctrl<T> <a> <space> : "\xcb\x9b" ogonek
-Ctrl<T> <u> <space> : "\xcb\x98" breve
-Ctrl<T> <v> <space> : "\xcb\x87" caron
-Ctrl<T> <quotedbl> <space> : "\xcb\x9d" doubleacute
-Ctrl<T> <A> <u> : "\xc4\x82" Abreve
-Ctrl<T> <C> <apostrophe> : "\xc4\x86" Cacute
-Ctrl<T> <L> <apostrophe> : "\xc4\xb9" Lacute
-Ctrl<T> <L> <slash> : "\xc5\x81" Lstroke
-Ctrl<T> <L> <greater> : "\xc4\xbd" Lcaron
-Ctrl<T> <N> <apostrophe> : "\xc5\x83" Nacute
-Ctrl<T> <S> <apostrophe> : "\xc5\x9a" Sacute
-Ctrl<T> <R> <apostrophe> : "\xc5\x94" Racute
-Ctrl<T> <U> <asterisk> : "\xc5\xae" Uring
-Ctrl<T> <Z> <apostrophe> : "\xc5\xb9" Zacute
-Ctrl<T> <a> <u> : "\xc4\x83" abreve
-Ctrl<T> <c> <apostrophe> : "\xc4\x87" cacute
-Ctrl<T> <l> <apostrophe> : "\xc4\xba" lacute
-Ctrl<T> <l> <slash> : "\xc5\x82" lstroke
-Ctrl<T> <l> <greater> : "\xc4\xbe" lcaron
-Ctrl<T> <n> <apostrophe> : "\xc5\x84" nacute
-Ctrl<T> <s> <apostrophe> : "\xc5\x9b" sacute
-Ctrl<T> <r> <apostrophe> : "\xc5\x95" racute
-Ctrl<T> <u> <asterisk> : "\xc5\xaf" uring
-Ctrl<T> <z> <apostrophe> : "\xc5\xba" zacute
-#
-# Latin-4 sequences
-Ctrl<T> <N> <N> : "\xc5\x8a" ENG
-Ctrl<T> <U> <a> : "\xc5\xb2" Uogonek
-Ctrl<T> <u> <a> : "\xc5\xb3" uogonek
-Ctrl<T> <k> <k> : "\xc4\xb8" kra
-Ctrl<T> <R> <comma> : "\xc5\x96" Rcedilla
-Ctrl<T> <comma> <R> : "\xc5\x96" Rcedilla
-Ctrl<T> <r> <comma> : "\xc5\x97" rcedilla
-Ctrl<T> <comma> <r> : "\xc5\x97" rcedilla
-Ctrl<T> <I> <asciitilde> : "\xc4\xa8" Itilde
-Ctrl<T> <asciitilde> <I> : "\xc4\xa8" Itilde
-Ctrl<T> <i> <asciitilde> : "\xc4\xa9" itilde
-Ctrl<T> <asciitilde> <i> : "\xc4\xa9" itilde
-Ctrl<T> <L> <comma> : "\xc4\xbb" Lcedilla
-Ctrl<T> <comma> <L> : "\xc4\xbb" Lcedilla
-Ctrl<T> <l> <comma> : "\xc4\xbc" lcedilla
-Ctrl<T> <comma> <l> : "\xc4\xbc" lcedilla
-Ctrl<T> <S> <v> : "\xc5\xa0" Scaron
-Ctrl<T> <S> <V> : "\xc5\xa0" Scaron
-Ctrl<T> <v> <S> : "\xc5\xa0" Scaron
-Ctrl<T> <V> <S> : "\xc5\xa0" Scaron
-Ctrl<T> <s> <v> : "\xc5\xa1" scaron
-Ctrl<T> <s> <V> : "\xc5\xa1" scaron
-Ctrl<T> <v> <s> : "\xc5\xa1" scaron
-Ctrl<T> <V> <s> : "\xc5\xa1" scaron
-Ctrl<T> <E> <underscore> : "\xc4\x92" Emacron
-Ctrl<T> <underscore> <E> : "\xc4\x92" Emacron
-Ctrl<T> <e> <underscore> : "\xc4\x93" emacron
-Ctrl<T> <underscore> <e> : "\xc4\x93" emacron
-Ctrl<T> <G> <comma> : "\xc4\xa2" Gcedilla
-Ctrl<T> <comma> <G> : "\xc4\xa2" Gcedilla
-Ctrl<T> <g> <comma> : "\xc4\xa3" gcedilla
-Ctrl<T> <comma> <g> : "\xc4\xa3" gcedilla
-Ctrl<T> <T> <bar> : "\xc5\xa6" Tslash
-Ctrl<T> <bar> <T> : "\xc5\xa6" Tslash
-Ctrl<T> <t> <bar> : "\xc5\xa7" tslash
-Ctrl<T> <bar> <t> : "\xc5\xa7" tslash
-Ctrl<T> <n> <n> : "\xc5\x8b" eng
-Ctrl<T> <d> <underscore> : "\xc4\x91"
-Ctrl<T> <underscore> <d> : "\xc4\x91"
-Ctrl<T> <N> <comma> : "\xc5\x85" Ncedilla
-Ctrl<T> <comma> <N> : "\xc5\x85" Ncedilla
-Ctrl<T> <n> <comma> : "\xc5\x86" ncedilla
-Ctrl<T> <comma> <n> : "\xc5\x86" ncedilla
-Ctrl<T> <K> <comma> : "\xc4\xb6" Kcedilla
-Ctrl<T> <comma> <K> : "\xc4\xb6" Kcedilla
-Ctrl<T> <k> <comma> : "\xc4\xb7" kcedilla
-Ctrl<T> <comma> <k> : "\xc4\xb7" kcedilla
-Ctrl<T> <I> <a> : "\xc4\xae" Iogonek
-Ctrl<T> <a> <I> : "\xc4\xae" Iogonek
-Ctrl<T> <i> <a> : "\xc4\xaf" iogonek
-Ctrl<T> <a> <i> : "\xc4\xaf" iogonek
-Ctrl<T> <E> <period> : "\xc4\x96" Eabovedot
-Ctrl<T> <e> <period> : "\xc4\x97" eabovedot
-Ctrl<T> <U> <asciitilde> : "\xc5\xa8" Utilde
-Ctrl<T> <asciitilde> <U> : "\xc5\xa8" Utilde
-Ctrl<T> <u> <asciitilde> : "\xc5\xa9" utilde
-Ctrl<T> <asciitilde> <u> : "\xc5\xa9" utilde
-Ctrl<T> <U> <underscore> : "\xc5\xaa" Umacron
-Ctrl<T> <underscore> <U> : "\xc5\xaa" Umacron
-Ctrl<T> <u> <underscore> : "\xc5\xab" umacron
-Ctrl<T> <underscore> <u> : "\xc5\xab" umacron
-Ctrl<T> <I> <underscore> : "\xc4\xaa" Imacron
-Ctrl<T> <underscore> <I> : "\xc4\xaa" Imacron
-Ctrl<T> <i> <underscore> : "\xc4\xab" imacron
-Ctrl<T> <underscore> <i> : "\xc4\xab" imacron
-#
-# Latin-9 input sequences:
-<Multi_key> <o> <e> : "\xc5\x93"
-<Multi_key> <O> <E> : "\xc5\x92"
-<Multi_key> <Y> <quotedbl> : "\xc5\xb8"
-<Multi_key> <quotedbl> <Y> : "\xc5\xb8"
-Ctrl<T> <o> <e> : "\xc5\x93"
-Ctrl<T> <O> <E> : "\xc5\x92"
-Ctrl<T> <Y> <quotedbl> : "\xc5\xb8"
-Ctrl<T> <quotedbl> <Y> : "\xc5\xb8"
-END_STATE
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
-STATE "[ Cyrillic ]"
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
-<at> : "\x22" quotedbl
-<numbersign> : "\xe2\x84\x96" numerosign
-<dollar> : "\x25" percent
-<percent> : "\x3a" colon
-<asciicircum> : "\x2c" comma
-<ampersand> : "\x2e" period
-<asterisk> : "\x3b" semicolon
-<numerosign> : "\xe2\x84\x96" numerosign
-<q> : "\xd0\xb9" Cyrillic_shorti
-<w> : "\xd1\x86" Cyrillic_tse
-<e> : "\xd1\x83" Cyrillic_u
-<r> : "\xd0\xba" Cyrillic_ka
-<t> : "\xd0\xb5" Cyrillic_ie
-<y> : "\xd0\xbd" Cyrillic_en
-<u> : "\xd0\xb3" Cyrillic_ghe
-<i> : "\xd1\x88" Cyrillic_sha
-<o> : "\xd1\x89" Cyrillic_shcha
-<p> : "\xd0\xb7" Cyrillic_ze
-<bracketleft> : "\xd1\x85" Cyrillic_ha
-<bracketright> : "\xd1\x8a" Cyrillic_hardsign
-<Q> : "\xd0\x99" Cyrillic_SHORTI
-<W> : "\xd0\xa6" Cyrillic_TSE
-<E> : "\xd0\xa3" Cyrillic_U
-<R> : "\xd0\x9a" Cyrillic_KA
-<T> : "\xd0\x95" Cyrillic_IE
-<Y> : "\xd0\x9d" Cyrillic_EN
-<U> : "\xd0\x93" Cyrillic_GHE
-<I> : "\xd0\xa8" Cyrillic_SHA
-<O> : "\xd0\xa9" Cyrillic_SHCHA
-<P> : "\xd0\x97" Cyrillic_ZE
-Lock<bracketleft> : "\xd0\xa5" Cyrillic_HA
-Lock<bracketright> : "\xd0\xaa" Cyrillic_HARDSIGN
-<braceleft> : "\xd0\xa5" Cyrillic_HA
-<braceright> : "\xd0\xaa" Cyrillic_HARDSIGN
-<a> : "\xd1\x84" Cyrillic_ef
-<s> : "\xd1\x8b" Cyrillic_yeru
-<d> : "\xd0\xb2" Cyrillic_ve
-<f> : "\xd0\xb0" Cyrillic_a
-<g> : "\xd0\xbf" Cyrillic_pe
-<h> : "\xd1\x80" Cyrillic_er
-<j> : "\xd0\xbe" Cyrillic_o
-<k> : "\xd0\xbb" Cyrillic_el
-<l> : "\xd0\xb4" Cyrillic_de
-<semicolon> : "\xd0\xb6" Cyrillic_ghe
-<quoteright> : "\xd1\x8d" Cyrillic_e
-<A> : "\xd0\xa4" Cyrillic_EF
-<S> : "\xd0\xab" Cyrillic_YERU
-<D> : "\xd0\x92" Cyrillic_VE
-<F> : "\xd0\x90" Cyrillic_A
-<G> : "\xd0\x9f" Cyrillic_PE
-<H> : "\xd0\xa0" Cyrillic_ER
-<J> : "\xd0\x9e" Cyrillic_O
-<K> : "\xd0\x9b" Cyrillic_EL
-<L> : "\xd0\x94" Cyrillic_DE
-<colon> : "\xd0\x96" Cyrillic_GHE
-<quotedbl> : "\xd0\xad" Cyrillic_E
-<z> : "\xd1\x8f" Cyrillic_ya
-<x> : "\xd1\x87" Cyrillic_che
-<c> : "\xd1\x81" Cyrillic_es
-<v> : "\xd0\xbc" Cyrillic_em
-<b> : "\xd0\xb8" Cyrillic_i
-<n> : "\xd1\x82" Cyrillic_te
-<m> : "\xd1\x8c" Cyrillic_softsign
-<comma> : "\xd0\xb1" Cyrillic_be
-<period> : "\xd1\x8e" Cyrillic_yu
-<slash> : "\xd1\x91" Cyrillic_io
-<Z> : "\xd0\xaf" Cyrillic_YA
-<X> : "\xd0\xa7" Cyrillic_CHE
-<C> : "\xd0\xa1" Cyrillic_ES
-<V> : "\xd0\x9c" Cyrillic_EM
-<B> : "\xd0\x98" Cyrillic_I
-<N> : "\xd0\xa2" Cyrillic_TE
-<M> : "\xd0\xac" Cyrillic_SOFTSIGN
-<less> : "\xd0\x91" Cyrillic_BE
-<greater> : "\xd0\xae" Cyrillic_YU
-<question> : "\xd0\x81" Cyrillic_IO
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
-END_STATE
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
-STATE "[ Greek ]"
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Spaces
+<Multi_key> <space> <space> : " " nobreakspace # NO-BREAK SPACE
+<Multi_key> <space> <period>: " " U2008 # PUNCTUATION SPACE
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+<Multi_key> <o> <c> : "©" copyright
+<Multi_key> <o> <C> : "©" copyright
+<Multi_key> <O> <c> : "©" copyright
+<Multi_key> <O> <C> : "©" copyright
-<at> : "\x22" quotedbl
-<numbersign> : "\xcf\x80" numerosign
-<dollar> : "\x25" percent
-<percent> : "\x3a" colon
-<asciicircum> : "\x2c" comma
-<ampersand> : "\x2e" period
-<asterisk> : "\x3b" semicolon
-<q> : "\x3b" semicolon
-<w> : "\xcf\x82" Greek_sigma
-<e> : "\xce\xb5" Greek_epsilon
-<r> : "\xcf\x81" Greek_rho
-<t> : "\xcf\x84" Greek_tau
-<y> : "\xcf\x85" Greek_upsilon
-<u> : "\xce\xb8" Greek_theta
-<i> : "\xce\xb9" Greek_iota
-<o> : "\xce\xbf" Greek_omicron
-<p> : "\xcf\x80" Greek_pi
-<Greek_sigma> : "\xcf\x82" Greek_sigma
-<Greek_epsilon> : "\xce\xb5" Greek_epsilon
-<Greek_rho> : "\xcf\x81" Greek_rho
-<Greek_tau> : "\xcf\x84" Greek_tau
-<Greek_upsilon> : "\xcf\x85" Greek_upsilon
-<Greek_theta> : "\xce\xb8" Greek_theta
-<Greek_iota> : "\xce\xb9" Greek_iota
-<Greek_omicron> : "\xce\xbf" Greek_omicron
-<Greek_pi> : "\xcf\x80" Greek_pi
-<Q> : "\x3a" colon
-<W> : "\xce\xa3" Greek_SIGMA
-<E> : "\xce\x95" Greek_EPSILON
-<R> : "\xce\xa1" Greek_RHO
-<T> : "\xce\xa4" Greek_TAU
-<Y> : "\xce\xa5" Greek_UPSILON
-<U> : "\xce\x98" Greek_THETA
-<I> : "\xce\x99" Greek_IOTA
-<O> : "\xce\x9f" Greek_OMICRON
-<P> : "\xce\xa0" Greek_PI
-<Greek_SIGMA> : "\xce\xa3" Greek_SIGMA
-<Greek_EPSILON> : "\xce\x95" Greek_EPSILON
-<Greek_RHO> : "\xce\xa1" Greek_RHO
-<Greek_TAU> : "\xce\xa4" Greek_TAU
-<Greek_UPSILON> : "\xce\xa5" Greek_UPSILON
-<Greek_THETA> : "\xce\x98" Greek_THETA
-<Greek_IOTA> : "\xce\x99" Greek_IOTA
-<Greek_OMICRON> : "\xce\x9f" Greek_OMICRON
-<Greek_PI> : "\xce\xa0" Greek_PI
-<a> : "\xce\xb1" Greek_alpha
-<s> : "\xcf\x83" Greek_finalsmallsigma
-<d> : "\xce\xb4" Greek_delta
-<f> : "\xcf\x86" Greek_phi
-<g> : "\xce\xb3" Greek_gamma
-<h> : "\xce\xb7" Greek_eta
-<j> : "\xce\xbe" Greek_xi
-<k> : "\xce\xba" Greek_kappa
-<l> : "\xce\xbb" Greek_lamda
-<Greek_alpha> : "\xce\xb1" Greek_alpha
-<Greek_finalsmallsigma> : "\xcf\x83" Greek_finalsmallsigma
-<Greek_delta> : "\xce\xb4" Greek_delta
-<Greek_phi> : "\xcf\x86" Greek_phi
-<Greek_gamma> : "\xce\xb3" Greek_gamma
-<Greek_eta> : "\xce\xb7" Greek_eta
-<Greek_xi> : "\xce\xbe" Greek_xi
-<Greek_kappa> : "\xce\xba" Greek_kappa
-<Greek_lamda> : "\xce\xbb" Greek_lamda
-<A> : "\xce\x91" Greek_ALPHA
-<S> : "\xce\xa3" Greek_SIGMA
-<D> : "\xce\x94" Greek_DELTA
-<F> : "\xce\xa6" Greek_PHI
-<G> : "\xce\x93" Greek_GAMMA
-<H> : "\xce\x97" Greek_ETA
-<J> : "\xce\x9e" Greek_XI
-<K> : "\xce\x9a" Greek_KAPPA
-<L> : "\xce\x9b" Greek_LAMDA
-<Greek_ALPHA> : "\xce\x91" Greek_ALPHA
-<Greek_DELTA> : "\xce\x94" Greek_DELTA
-<Greek_PHI> : "\xce\xa6" Greek_PHI
-<Greek_GAMMA> : "\xce\x93" Greek_GAMMA
-<Greek_ETA> : "\xce\x97" Greek_ETA
-<Greek_XI> : "\xce\x9e" Greek_XI
-<Greek_KAPPA> : "\xce\x9a" Greek_KAPPA
-<Greek_LAMDA> : "\xce\x9b" Greek_LAMDA
-<z> : "\xce\xb6" Greek_zeta
-<x> : "\xcf\x87" Greek_chi
-<c> : "\xcf\x88" Greek_psi
-<v> : "\xcf\x89" Greek_omega
-<b> : "\xce\xb2" Greek_beta
-<n> : "\xce\xbd" Greek_nu
-<m> : "\xce\xbc" Greek_mu
-<Greek_zeta> : "\xc2\x98" Greek_zeta
-<Greek_chi> : "\xcf\x87" Greek_chi
-<Greek_psi> : "\xcf\x88" Greek_psi
-<Greek_omega> : "\xcf\x89" Greek_omega
-<Greek_beta> : "\xce\xb2" Greek_beta
-<Greek_nu> : "\xce\xbd" Greek_nu
-<Greek_mu> : "\xce\xbc" Greek_mu
-<Z> : "\xce\x96" Greek_ZETA
-<X> : "\xce\xa7" Greek_CHI
-<C> : "\xce\xa8" Greek_PSI
-<V> : "\xce\xa9" Greek_OMEGA
-<B> : "\xce\x92" Greek_BETA
-<N> : "\xce\x9d" Greek_NU
-<M> : "\xce\x9c" Greek_MU
-<less> : "\x3b" semicolon
-<greater> : "\x3a" colon
-<question> : "\xc2\xb7" periodcentered
-<Greek_ZETA> : "\xce\x96" Greek_ZETA
-<Greek_CHI> : "\xce\xa7" Greek_CHI
-<Greek_PSI> : "\xce\xa8" Greek_PSI
-<Greek_OMEGA> : "\xce\xa9" Greek_OMEGA
-<Greek_BETA> : "\xce\x92" Greek_BETA
-<Greek_NU> : "\xce\x9d" Greek_NU
-<Greek_MU> : "\xce\x9c" Greek_MU
-<periodcentered> : "\xc2\xb7" periodcentered
-<dead_acute> <Greek_alpha> :"\xce\xac" Greek_alphaaccent
-<dead_acute> <Greek_epsilon> :"\xce\xad" Greek_epsilonaccent
-<dead_acute> <Greek_eta> :"\xce\xae" Greek_etaaccent
-<dead_acute> <Greek_iota> :"\xce\xaf" Greek_iotaaccent
-<dead_acute> <Greek_omicron> :"\xcf\x8c" Greek_omicronaccent
-<dead_acute> <Greek_upsilon> :"\xcf\x8d" Greek_upsilonaccent
-<dead_acute> <Greek_omega> :"\xcf\x8e" Greek_omegaaccent
-<dead_acute> <Greek_ALPHA> :"\xce\x86" Greek_ALPHAaccent
-<dead_acute> <Greek_EPSILON> :"\xce\x88" Greek_EPSILONaccent
-<dead_acute> <Greek_ETA> :"\xce\x89" Greek_ETAaccent
-<dead_acute> <Greek_IOTA> :"\xce\x8a" Greek_IOTAaccent
-<dead_acute> <Greek_OMICRON> :"\xce\x8c" Greek_OMICRONaccent
-<dead_acute> <Greek_UPSILON> :"\xce\x8e" Greek_UPSILONaccent
-<dead_acute> <Greek_OMEGA> :"\xce\x8f" Greek_OMEGAaccent
-<dead_diaeresis> <Greek_iota> :"\xcf\x8a" Greek_iotadieresis
-<dead_diaeresis> <Greek_upsilon> :"\xcf\x8b" Greek_upsilondieresis
-<diaeresis> <Greek_IOTA> :"\xce\xaa" Greek_IOTAdiaeresis
-<diaeresis> <Greek_UPSILON> :"\xce\xab" Greek_UPSILONdieresis
-<dead_acute> <dead_diaeresis> <Greek_upsilon> :"\xce\xb0"
-<dead_diaeresis> <dead_acute> <Greek_upsilon> :"\xce\xb0"
-<dead_acute> <dead_diaeresis> <Greek_iota> :"\xce\x90"
-<dead_diaeresis> <dead_acute> <Greek_iota> :"\xce\x90"
-<ordfeminine> <0> :"\xc2\xb1" plusminus
-<ordfeminine> <1> :"\xc2\xa7" section
-<ordfeminine> <2> :"\xc2\xb2" twosuperior
-<ordfeminine> <3> :"\xc2\xb3" threesuperior
-<ordfeminine> <4> :""
-<ordfeminine> <5> :"\xc2\xa6" brokenbar
-<ordfeminine> <6> :"\xc2\xa9" copyright
-<ordfeminine> <7> :"\xc2\xac" notequal
-<ordfeminine> <8> :"\xc2\xad" hyphen
-<ordfeminine> <9> :"\xc2\xb0" degree
-<ordfeminine> <hyphen> :"\xc2\xbd" onehalf
-<ordfeminine> <equal> :""
-<ordfeminine> <backslash> :"\xc2\xa3" sterling
-<ordfeminine> <braceleft> :"\xca\xbd"
-<ordfeminine> <braceright> :"\xca\xbc"
-<ordfeminine> <bracketleft> :"\xc2\xab" guillemotleft
-<ordfeminine> <bracketright> :"\xc2\xbb" guillemotright
+<Multi_key> <o> <r> : "®" registered
+<Multi_key> <o> <R> : "®" registered
+<Multi_key> <O> <r> : "®" registered
+<Multi_key> <O> <R> : "®" registered
-END_STATE
+<Multi_key> <period> <greater> : "›" U203a
+<Multi_key> <period> <less> : "‹" U2039
+<Multi_key> <period> <period> : "·" U00B7
+<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
+<Multi_key> <exclam> <exclam> : "¡" exclamdown
+<Multi_key> <p> <exclam> : "¶" paragraph
+<Multi_key> <P> <exclam> : "¶" paragraph
+<Multi_key> <plus> <minus> : "±" plusminus
+<Multi_key> <question> <question> : "¿" questiondown
+<Multi_key> <e> <e> : "Æ" U018f
+<Multi_key> <minus> <d> : "Ä‘" dstroke
+<Multi_key> <minus> <D> : "Ä" Dstroke
+<Multi_key> <s> <s> : "ß" ssharp
-STATE "[ Thai ]"
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+<Multi_key> <o> <e> : "Å“" oe
+<Multi_key> <O> <E> : "Å’" OE
+<Multi_key> <a> <e> : "æ" ae
+<Multi_key> <A> <E> : "Æ" AE
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+<Multi_key> <o> <o> : "°" degree # ^0 already taken
-<exclam> : "\x2b"
-<2> : "\x2f"
-<3> : "\x2d"
-<W> : "\x22"
-<braceright> : "\x2c"
-<quotedbl> : "\x2e"
-<backslash> : "\x5f"
-<bar> : "\x25"
-<Z> : "\x28"
-<X> : "\x29"
-<M> : "\x3f"
-<d> : "\xe0\xb8\x81"
-<minus> : "\xe0\xb8\x82"
-<grave> : "\xe0\xb8\x83"
-<8> : "\xe0\xb8\x84"
-<asciitilde> : "\xe0\xb8\x85"
-<S> : "\xe0\xb8\x86"
-<apostrophe> : "\xe0\xb8\x87"
-<0> : "\xe0\xb8\x88"
-<C> : "\xe0\xb8\x89"
-<equal> : "\xe0\xb8\x8a"
-<colon> : "\xe0\xb8\x8b"
-<G> : "\xe0\xb8\x8c"
-<P> : "\xe0\xb8\x8d"
-<E> : "\xe0\xb8\x8e"
-<D> : "\xe0\xb8\x8f"
-<braceleft> : "\xe0\xb8\x90"
-<R> : "\xe0\xb8\x91"
-<less> : "\xe0\xb8\x92"
-<I> : "\xe0\xb8\x93"
-<f> : "\xe0\xb8\x94"
-<9> : "\xe0\xb8\x95"
-<5> : "\xe0\xb8\x96"
-<m> : "\xe0\xb8\x97"
-<T> : "\xe0\xb8\x98"
-<o> : "\xe0\xb8\x99"
-<bracketleft> : "\xe0\xb8\x9a"
-<x> : "\xe0\xb8\x9b"
-<z> : "\xe0\xb8\x9c"
-<slash> : "\xe0\xb8\x9d"
-<r> : "\xe0\xb8\x9e"
-<a> : "\xe0\xb8\x9f"
-<4> : "\xe0\xb8\xa0"
-<comma> : "\xe0\xb8\xa1"
-<p> : "\xe0\xb8\xa2"
-<i> : "\xe0\xb8\xa3"
-<A> : "\xe0\xb8\xa4"
-<bracketright> : "\xe0\xb8\xa5"
-<question> : "\xe0\xb8\xa6"
-<semicolon> : "\xe0\xb8\xa7"
-<L> : "\xe0\xb8\xa8"
-<K> : "\xe0\xb8\xa9"
-<l> : "\xe0\xb8\xaa"
-<s> : "\xe0\xb8\xab"
-<greater> : "\xe0\xb8\xac"
-<v> : "\xe0\xb8\xad"
-<V> : "\xe0\xb8\xae"
-<O> : "\xe0\xb8\xaf"
-<t> : "\xe0\xb8\xb0"
-<y> : "\xe0\xb8\xb1"
-<k> : "\xe0\xb8\xb2"
-<e> : "\xe0\xb8\xb3"
-<b> : "\xe0\xb8\xb4"
-<u> : "\xe0\xb8\xb5"
-<7> : "\xe0\xb8\xb6"
-<n> : "\xe0\xb8\xb7"
-<6> : "\xe0\xb8\xb8"
-<asciicircum> : "\xe0\xb8\xb9"
-<B> : "\xe0\xb8\xba"
-<ampersand> : "\xe0\xb8\xbf"
-<g> : "\xe0\xb9\x80"
-<c> : "\xe0\xb9\x81"
-<F> : "\xe0\xb9\x82"
-<period> : "\xe0\xb9\x83"
-<w> : "\xe0\xb9\x84"
-<1> : "\xe0\xb9\x85"
-<q> : "\xe0\xb9\x86"
-<H> : "\xe0\xb9\x87"
-<j> : "\xe0\xb9\x88"
-<h> : "\xe0\xb9\x89"
-<U> : "\xe0\xb9\x8a"
-<J> : "\xe0\xb9\x8b"
-<N> : "\xe0\xb9\x8c"
-<Y> : "\xe0\xb9\x8d"
-<Q> : "\xe0\xb9\x90"
-<at> : "\xe0\xb9\x91"
-<numbersign> : "\xe0\xb9\x92"
-<dollar> : "\xe0\xb9\x93"
-<percent> : "\xe0\xb9\x94"
-<asterisk> : "\xe0\xb9\x95"
-<parenleft> : "\xe0\xb9\x96"
-<parenright> : "\xe0\xb9\x97"
-<underscore> : "\xe0\xb9\x98"
-<plus> : "\xe0\xb9\x99"
-END_STATE
+XCOMM Quotation marks
+<Multi_key> <quotedbl> <backslash> : "ã€" U301d # REVERSED DOUBLE PRIME QUOTATION MARK
+<Multi_key> <quotedbl> <slash> : "〞" U301e # DOUBLE PRIME QUOTATION MARK
+<Multi_key> <less> <less> : "«" guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<Multi_key> <greater> <greater> : "»" guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<Multi_key> <less> <apostrophe> : "‘" U2018 # LEFT SINGLE QUOTATION MARK
+<Multi_key> <apostrophe> <less> : "‘" U2018 # LEFT SINGLE QUOTATION MARK
+<Multi_key> <greater> <apostrophe> : "’" U2019 # RIGHT SINGLE QUOTATION MARK
+<Multi_key> <apostrophe> <greater> : "’" U2019 # RIGHT SINGLE QUOTATION MARK
+<Multi_key> <comma> <apostrophe> : "‚" U201a # SINGLE LOW-9 QUOTATION MARK
+<Multi_key> <apostrophe> <comma> : "‚" U201a # SINGLE LOW-9 QUOTATION MARK
+<Multi_key> <less> <quotedbl> : "“" U201c # LEFT DOUBLE QUOTATION MARK
+<Multi_key> <quotedbl> <less> : "“" U201c # LEFT DOUBLE QUOTATION MARK
+<Multi_key> <greater> <quotedbl> : "â€" U201d # RIGHT DOUBLE QUOTATION MARK
+<Multi_key> <quotedbl> <greater> : "â€" U201d # RIGHT DOUBLE QUOTATION MARK
+<Multi_key> <comma> <quotedbl> : "„" U201e # DOUBLE LOW-9 QUOTATION MARK
+<Multi_key> <quotedbl> <comma> : "„" U201e # DOUBLE LOW-9 QUOTATION MARK
-STATE "[ Arabic ]"
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Per xxx
+<Multi_key> <percent> <o> : "‰" U2030 # PER MILLE SIGN
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Currencies
+<Multi_key> <C> <E> : "â‚ " U20a0 # EURO-CURRENCY SIGN
+<Multi_key> <C> <slash> : "â‚¡" U20a1 # COLON SIGN
+<Multi_key> <slash> <C> : "â‚¡" U20a1 # COLON SIGN
+<Multi_key> <C> <r> : "â‚¢" U20a2 # CRUZEIRO SIGN
+<Multi_key> <F> <r> : "â‚£" U20a3 # FRENCH FRANC SIGN
+<Multi_key> <L> <equal> : "₤" U20a4 # LIRA SIGN
+<Multi_key> <equal> <L> : "₤" U20a4 # LIRA SIGN
+<Multi_key> <m> <slash> : "â‚¥" U20a5 # MILL SIGN
+<Multi_key> <slash> <m> : "â‚¥" U20a5 # MILL SIGN
+<Multi_key> <N> <equal> : "₦" U20a6 # NAIRA SIGN
+<Multi_key> <equal> <N> : "₦" U20a6 # NAIRA SIGN
+<Multi_key> <P> <t> : "₧" U20a7 # PESETA SIGN
+<Multi_key> <R> <s> : "₨" U20a8 # RUPEE SIGN
+<Multi_key> <W> <equal> : "â‚©" U20a9 # WON SIGN
+<Multi_key> <equal> <W> : "â‚©" U20a9 # WON SIGN
+XCOMM "₪" U20aa NEW SHEQEL SIGN
+<Multi_key> <d> <minus> : "â‚«" U20ab # DONG SIGN
+<Multi_key> <C> <equal> : "€" EuroSign # EURO SIGN
+<Multi_key> <equal> <C> : "€" EuroSign # EURO SIGN
+<Multi_key> <E> <equal> : "€" EuroSign # EURO SIGN
+<Multi_key> <equal> <E> : "€" EuroSign # EURO SIGN
-# <0> Arabic-Indic Digit Zero
-<0> : "\xd9\xa0"
-# <1> Arabic-Indic Digit One
-<1> : "\xd9\xa1"
-# <2> Arabic-Indic Digit Two
-<2> : "\xd9\xa2"
-# <3> Arabic-Indic Digit Three
-<3> : "\xd9\xa3"
-# <4> Arabic-Indic Digit Four
-<4> : "\xd9\xa4"
-# <5> Arabic-Indic Digit Five
-<5> : "\xd9\xa5"
-# <6> Arabic-Indic Digit Six
-<6> : "\xd9\xa6"
-# <7> Arabic-Indic Digit Seven
-<7> : "\xd9\xa7"
-# <8> Arabic-Indic Digit Eight
-<8> : "\xd9\xa8"
-# <9> Arabic-Indic Digit Nine
-<9> : "\xd9\xa9"
+<Multi_key> <L> <minus> : "£" U00a3 # POUND SIGN
+<Multi_key> <minus> <L> : "£" U00a3 # POUND SIGN
+<Multi_key> <Y> <equal> : "Â¥" yen
+<Multi_key> <equal><Y> : "Â¥" yen
-<a> : "\xd8\xb4"
-<A> : "\x5c"
-<apostrophe> : "\xd8\xb7"
-<asciitilde> : "\xd9\x91"
-<b> : "\xd9\x84\xd8\xa7"
-<B> : "\xd9\x84\xd8\xa2"
-<backslash> : "\xd9\x80"
-<bracketleft> : "\xd8\xac"
-<bracketright> : "\xd8\xaf"
-<c> : "\xd8\xa4"
-<C> : "\xd9\x8d"
-<comma> : "\xd9\x88"
-<d> : "\xd9\x8a"
-<D> : "\x5d"
-<e> : "\xd8\xab"
-<E> : "\xd9\x8f"
-<f> : "\xd8\xa8"
-<F> : "\x5b"
-<g> : "\xd9\x84"
-<G> : "\xd9\x84\xd8\xa3"
-<grave> : "\xd8\xb0"
-<greater> : "\x2e"
-<h> : "\xd8\xa7"
-<H> : "\xd8\xa3"
-<i> : "\xd9\x87"
-<j> : "\xd8\xaa"
-<k> : "\xd9\x86"
-<K> : "\xd8\x8c"
-<l> : "\xd9\x85"
-<L> : "\x2f"
-<m> : "\xd8\xa9"
-# previously <M> : "\xd9\x8f"
-<M> : "\xd9\xac"
-<n> : "\xd9\x89"
-<N> : "\xd8\xa2"
-<o> : "\xd8\xae"
-<p> : "\xd8\xad"
-<P> : "\xd8\x9b"
-<period> : "\xd8\xb2"
-<q> : "\xd8\xb6"
-<Q> : "\xd9\x8e"
-<question> : "\xd8\x9f"
-<r> : "\xd9\x82"
-<R> : "\xd9\x8c"
-<s> : "\xd8\xb3"
-<semicolon> : "\xd9\x83"
-<slash> : "\xd8\xb8"
-<smaller> : "\x2c"
-<t> : "\xd9\x81"
-<u> : "\xd8\xb9"
-<v> : "\xd8\xb1"
-<V> : "\xd9\x90"
-<w> : "\xd8\xb5"
-<W> : "\xd9\x8b"
-<x> : "\xd8\xa1"
-<y> : "\xd8\xba"
-<Y> : "\xd8\xa5"
-<z> : "\xd8\xa6"
+XCOMM Long S
+<Multi_key> <f> <s> : "Å¿" U017f # LONG S
+<Multi_key> <f> <S> : "Å¿" U017f # LONG S
-END_STATE
+XCOMM Dashes
+<Multi_key> <minus> <minus> <period> : "–" U2013 # EN DASH
+<Multi_key> <minus> <minus> <minus> : "—" U2014 # EM DASH
-STATE "[ Hebrew ]"
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Musical alterations
+<Multi_key> <numbersign> <b> : "â™­" U266d # MUSIC FLAT SIGN
+<Multi_key> <numbersign> <f> : "â™®" U266e # MUSIC NATURAL SIGN
+<Multi_key> <numbersign> <numbersign> : "♯" U266f # MUSIC SHARP SIGN
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Other symbols
+<Multi_key> <s> <o> : "§" section # SECTION SIGN
+<Multi_key> <o> <s> : "§" section # SECTION SIGN
-<q> : "\x2f"
-<w> : "\x27"
-<e> : "\xd7\xa7"
-<r> : "\xd7\xa8"
-<t> : "\xd7\x90"
-<y> : "\xd7\x98"
-<u> : "\xd7\x95"
-<i> : "\xd7\x9f"
-<o> : "\xd7\x9d"
-<p> : "\xd7\xa4"
-<a> : "\xd7\xa9"
-<s> : "\xd7\x93"
-<d> : "\xd7\x92"
-<f> : "\xd7\x9b"
-<g> : "\xd7\xa2"
-<h> : "\xd7\x99"
-<j> : "\xd7\x97"
-<k> : "\xd7\x9c"
-<l> : "\xd7\x9a"
-<semicolon> : "\xd7\xa3"
-<z> : "\xd7\x96"
-<x> : "\xd7\xa1"
-<c> : "\xd7\x91"
-<v> : "\xd7\x94"
-<b> : "\xd7\xa0"
-<n> : "\xd7\x9e"
-<m> : "\xd7\xa6"
-<comma> : "\xd7\xaa"
-<period> : "\xd7\xa5"
-<slash> : "\x2f"
-<grave> : "\x3b"
-<apostrophe> : "\x2c"
-END_STATE
+<Multi_key> <o> <x> : "¤" currency
+<Multi_key> <x> <o> : "¤" currency
-STATE "[ Unicode Hex ]"
-STATE_TYPE: CODE_INPUT
-#attributes
-MAX_INPUT_LENGTH: 4 # 1|2|3|4|5|,...
- # when the number of input sequence
- # reaches to the given number,
- # conversion occurs automatically.
+<Multi_key> <P> <P> : "¶" paragraph # PILCROW SIGN (PARAGRAPH SIGN)
-TYPE_OF_INPUT: HEX # HEX or OCTET. The default is HEX.
- # If it's HEX, valid input is: 0-9,
- # a-f, A-F.
- # If it's OCTET, valid input is: 0-7
-#end of attributes
-#actions
-Ctrl<w> : DO_LOOKUP
-<space> : DO_CONV
- # force to convert input sequence into
- # a character before MAX_INPUT_LENGTH
- # of characters are input.
-Ctrl<n> : NEXT_PAGE
-Ctrl<p> : PREV_PAGE
-Ctrl<a> : TOP_PAGE
-Ctrl<e> : LAST_PAGE
-<Right> : NEXT_CAND
-<Left> : PREV_CAND
-<Up> : UP_CAND
-<Down> : DOWN_CAND
-Ctrl<k> : SELECT_CAND
-#end of actions
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
+XCOMM Part 2
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
-END_STATE
+XCOMM Compose map for Korean Hangul(Choseongul) Conjoining Jamos automatically
+XCOMM generated from UnicodeData-2.0.14.txt at
+XCOMM ftp://ftp.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt
+XCOMM by Jungshik Shin <jshin@jshin.net> 2002-10-17
+XCOMM There are some conflicts among sequences, but I left them alone.
+XCOMM
+XCOMM group 1: cluster jamos made of three basic jamos
-STATE "[ Unicode Octal ]"
-STATE_TYPE: CODE_INPUT
-#attributes
-MAX_INPUT_LENGTH: 6 # 1|2|3|4|5|,...
- # when the number of input sequence
- # reaches to the given number,
- # conversion occurs automatically.
+ <Multi_key> <U1107> <U1109> <U1100> : "ᄢ" U1122 : ᄇᅠ ᄉᅠ ᄀᅠ = ᄢᅠ
+ <Multi_key> <U1107> <U1109> <U1103> : "ᄣ" U1123 : ᄇᅠ ᄉᅠ ᄃᅠ = ᄣᅠ
+ <Multi_key> <U1107> <U1109> <U1107> : "ᄤ" U1124 : ᄇᅠ ᄉᅠ ᄇᅠ = ᄤᅠ
+ <Multi_key> <U1107> <U1109> <U1109> : "ᄥ" U1125 : ᄇᅠ ᄉᅠ ᄉᅠ = ᄥᅠ
+ <Multi_key> <U1107> <U1109> <U110c> : "ᄦ" U1126 : ᄇᅠ ᄉᅠ ᄌᅠ = ᄦᅠ
+ <Multi_key> <U1107> <U1107> <U110b> : "ᄬ" U112c : ᄇᅠ ᄇᅠ ᄋᅠ = ᄬᅠ
+ <Multi_key> <U1109> <U1107> <U1100> : "ᄳ" U1133 : ᄉᅠ ᄇᅠ ᄀᅠ = ᄳᅠ
+ <Multi_key> <U1109> <U1109> <U1109> : "ᄴ" U1134 : ᄉᅠ ᄉᅠ ᄉᅠ = ᄴᅠ
+ <Multi_key> <U1169> <U1161> <U1175> : "á…«" U116b : á…Ÿá…© á…Ÿá…¡ á…Ÿá…µ = á…Ÿá…«
+ <Multi_key> <U116e> <U1165> <U1175> : "á…°" U1170 : á…Ÿá…® á…Ÿá…¥ á…Ÿá…µ = á…Ÿá…°
+ <Multi_key> <U116e> <U1165> <U1173> : "ᆋ" U118b : ᅟᅮ ᅟᅥ ᅟᅳ = ᅟᆋ
+ <Multi_key> <U11a8> <U11ba> <U11a8> : "ᇄ" U11c4 : ᅟᅠᆨ ᅟᅠᆺ ᅟᅠᆨ = ᅟᅠᇄ
+ <Multi_key> <U11af> <U11a8> <U11ba> : "ᇌ" U11cc : ᅟᅠᆯ ᅟᅠᆨ ᅟᅠᆺ = ᅟᅠᇌ
+ <Multi_key> <U11af> <U11ae> <U11c2> : "á‡" U11cf : ᅟᅠᆯ ᅟᅠᆮ ᅟᅠᇂ = á…Ÿá… á‡
+ <Multi_key> <U11af> <U11b7> <U11a8> : "ᇑ" U11d1 : ᅟᅠᆯ ᅟᅠᆷ ᅟᅠᆨ = ᅟᅠᇑ
+ <Multi_key> <U11af> <U11b7> <U11ba> : "ᇒ" U11d2 : ᅟᅠᆯ ᅟᅠᆷ ᅟᅠᆺ = ᅟᅠᇒ
+ <Multi_key> <U11af> <U11b8> <U11ba> : "ᇓ" U11d3 : ᅟᅠᆯ ᅟᅠᆸ ᅟᅠᆺ = ᅟᅠᇓ
+ <Multi_key> <U11af> <U11b8> <U11c2> : "ᇔ" U11d4 : ᅟᅠᆯ ᅟᅠᆸ ᅟᅠᇂ = ᅟᅠᇔ
+ <Multi_key> <U11af> <U11b8> <U11bc> : "ᇕ" U11d5 : ᅟᅠᆯ ᅟᅠᆸ ᅟᅠᆼ = ᅟᅠᇕ
+ <Multi_key> <U11af> <U11ba> <U11ba> : "ᇖ" U11d6 : ᅟᅠᆯ ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᇖ
+ <Multi_key> <U11b7> <U11ba> <U11ba> : "ᇞ" U11de : ᅟᅠᆷ ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᇞ
+ <Multi_key> <U11bc> <U11a8> <U11a8> : "ᇭ" U11ed : ᅟᅠᆼ ᅟᅠᆨ ᅟᅠᆨ = ᅟᅠᇭ
+ <Multi_key> <U1100> <U1100> : "á„" U1101 : ᄀᅠ ᄀᅠ = á„á… 
+ <Multi_key> <U1103> <U1103> : "ᄄ" U1104 : ᄃᅠ ᄃᅠ = ᄄᅠ
+ <Multi_key> <U1107> <U1107> : "ᄈ" U1108 : ᄇᅠ ᄇᅠ = ᄈᅠ
+ <Multi_key> <U1109> <U1109> : "ᄊ" U110a : ᄉᅠ ᄉᅠ = ᄊᅠ
+ <Multi_key> <U110c> <U110c> : "á„" U110d : ᄌᅠ ᄌᅠ = á„á… 
+ <Multi_key> <U1102> <U1100> : "ᄓ" U1113 : ᄂᅠ ᄀᅠ = ᄓᅠ
+ <Multi_key> <U1102> <U1102> : "ᄔ" U1114 : ᄂᅠ ᄂᅠ = ᄔᅠ
+ <Multi_key> <U1102> <U1103> : "ᄕ" U1115 : ᄂᅠ ᄃᅠ = ᄕᅠ
+ <Multi_key> <U1102> <U1107> : "ᄖ" U1116 : ᄂᅠ ᄇᅠ = ᄖᅠ
+ <Multi_key> <U1103> <U1100> : "ᄗ" U1117 : ᄃᅠ ᄀᅠ = ᄗᅠ
+ <Multi_key> <U1105> <U1102> : "ᄘ" U1118 : ᄅᅠ ᄂᅠ = ᄘᅠ
+ <Multi_key> <U1105> <U1105> : "ᄙ" U1119 : ᄅᅠ ᄅᅠ = ᄙᅠ
+ <Multi_key> <U1105> <U1112> : "á„š" U111a : á„…á…  á„’á…  = á„šá… 
+ <Multi_key> <U1105> <U110b> : "ᄛ" U111b : ᄅᅠ ᄋᅠ = ᄛᅠ
+ <Multi_key> <U1106> <U1107> : "ᄜ" U111c : ᄆᅠ ᄇᅠ = ᄜᅠ
+ <Multi_key> <U1106> <U110b> : "á„" U111d : ᄆᅠ á„‹á…  = á„á… 
+ <Multi_key> <U1107> <U1100> : "ᄞ" U111e : ᄇᅠ ᄀᅠ = ᄞᅠ
+ <Multi_key> <U1107> <U1102> : "ᄟ" U111f : ᄇᅠ ᄂᅠ = ᄟᅠ
+ <Multi_key> <U1107> <U1103> : "ᄠ" U1120 : ᄇᅠ ᄃᅠ = ᄠᅠ
+ <Multi_key> <U1107> <U1109> : "ᄡ" U1121 : ᄇᅠ ᄉᅠ = ᄡᅠ
+ <Multi_key> <U1107> <U110c> : "ᄧ" U1127 : ᄇᅠ ᄌᅠ = ᄧᅠ
+ <Multi_key> <U1107> <U110e> : "ᄨ" U1128 : ᄇᅠ ᄎᅠ = ᄨᅠ
+ <Multi_key> <U1107> <U1110> : "á„©" U1129 : ᄇᅠ á„á…  = á„©á… 
+ <Multi_key> <U1107> <U1111> : "ᄪ" U112a : ᄇᅠ ᄑᅠ = ᄪᅠ
+ <Multi_key> <U1107> <U110b> : "ᄫ" U112b : ᄇᅠ ᄋᅠ = ᄫᅠ
+ <Multi_key> <U1109> <U1100> : "ᄭ" U112d : ᄉᅠ ᄀᅠ = ᄭᅠ
+ <Multi_key> <U1109> <U1102> : "ᄮ" U112e : ᄉᅠ ᄂᅠ = ᄮᅠ
+ <Multi_key> <U1109> <U1103> : "ᄯ" U112f : ᄉᅠ ᄃᅠ = ᄯᅠ
+ <Multi_key> <U1109> <U1105> : "ᄰ" U1130 : ᄉᅠ ᄅᅠ = ᄰᅠ
+ <Multi_key> <U1109> <U1106> : "ᄱ" U1131 : ᄉᅠ ᄆᅠ = ᄱᅠ
+ <Multi_key> <U1109> <U1107> : "ᄲ" U1132 : ᄉᅠ ᄇᅠ = ᄲᅠ
+ <Multi_key> <U1109> <U110b> : "ᄵ" U1135 : ᄉᅠ ᄋᅠ = ᄵᅠ
+ <Multi_key> <U1109> <U110c> : "ᄶ" U1136 : ᄉᅠ ᄌᅠ = ᄶᅠ
+ <Multi_key> <U1109> <U110e> : "ᄷ" U1137 : ᄉᅠ ᄎᅠ = ᄷᅠ
+ <Multi_key> <U1109> <U110f> : "ᄸ" U1138 : ᄉᅠ á„á…  = ᄸᅠ
+ <Multi_key> <U1109> <U1110> : "ᄹ" U1139 : ᄉᅠ á„á…  = ᄹᅠ
+ <Multi_key> <U1109> <U1111> : "ᄺ" U113a : ᄉᅠ ᄑᅠ = ᄺᅠ
+ <Multi_key> <U1109> <U1112> : "ᄻ" U113b : ᄉᅠ ᄒᅠ = ᄻᅠ
+ <Multi_key> <U113c> <U113c> : "ᄽ" U113d : ᄼᅠ ᄼᅠ = ᄽᅠ
+ <Multi_key> <U113e> <U113e> : "ᄿ" U113f : ᄾᅠ ᄾᅠ = ᄿᅠ
+ <Multi_key> <U110b> <U1100> : "á…" U1141 : á„‹á…  ᄀᅠ = á…á… 
+ <Multi_key> <U110b> <U1103> : "ᅂ" U1142 : ᄋᅠ ᄃᅠ = ᅂᅠ
+ <Multi_key> <U110b> <U1106> : "ᅃ" U1143 : ᄋᅠ ᄆᅠ = ᅃᅠ
+ <Multi_key> <U110b> <U1107> : "ᅄ" U1144 : ᄋᅠ ᄇᅠ = ᅄᅠ
+ <Multi_key> <U110b> <U1109> : "ᅅ" U1145 : ᄋᅠ ᄉᅠ = ᅅᅠ
+ <Multi_key> <U110b> <U1140> : "ᅆ" U1146 : ᄋᅠ ᅀᅠ = ᅆᅠ
+ <Multi_key> <U110b> <U110b> : "ᅇ" U1147 : ᄋᅠ ᄋᅠ = ᅇᅠ
+ <Multi_key> <U110b> <U110c> : "ᅈ" U1148 : ᄋᅠ ᄌᅠ = ᅈᅠ
+ <Multi_key> <U110b> <U110e> : "ᅉ" U1149 : ᄋᅠ ᄎᅠ = ᅉᅠ
+ <Multi_key> <U110b> <U1110> : "á…Š" U114a : á„‹á…  á„á…  = á…Šá… 
+ <Multi_key> <U110b> <U1111> : "á…‹" U114b : á„‹á…  á„‘á…  = á…‹á… 
+ <Multi_key> <U110c> <U110b> : "á…" U114d : ᄌᅠ á„‹á…  = á…á… 
+ <Multi_key> <U114e> <U114e> : "á…" U114f : á…Žá…  á…Žá…  = á…á… 
+ <Multi_key> <U1150> <U1150> : "á…‘" U1151 : á…á…  á…á…  = á…‘á… 
+ <Multi_key> <U110e> <U110f> : "á…’" U1152 : á„Žá…  á„á…  = á…’á… 
+ <Multi_key> <U110e> <U1112> : "á…“" U1153 : á„Žá…  á„’á…  = á…“á… 
+ <Multi_key> <U1111> <U1107> : "ᅖ" U1156 : ᄑᅠ ᄇᅠ = ᅖᅠ
+ <Multi_key> <U1111> <U110b> : "á…—" U1157 : á„‘á…  á„‹á…  = á…—á… 
+ <Multi_key> <U1112> <U1112> : "ᅘ" U1158 : ᄒᅠ ᄒᅠ = ᅘᅠ
+ <Multi_key> <U1161> <U1175> : "á…¢" U1162 : á…Ÿá…¡ á…Ÿá…µ = á…Ÿá…¢
+ <Multi_key> <U1163> <U1175> : "á…¤" U1164 : á…Ÿá…£ á…Ÿá…µ = á…Ÿá…¤
+ <Multi_key> <U1165> <U1175> : "á…¦" U1166 : á…Ÿá…¥ á…Ÿá…µ = á…Ÿá…¦
+ <Multi_key> <U1167> <U1175> : "á…¨" U1168 : á…Ÿá…§ á…Ÿá…µ = á…Ÿá…¨
+ <Multi_key> <U1169> <U1161> : "á…ª" U116a : á…Ÿá…© á…Ÿá…¡ = á…Ÿá…ª
+ <Multi_key> <U1169> <U1175> : "á…¬" U116c : á…Ÿá…© á…Ÿá…µ = á…Ÿá…¬
+ <Multi_key> <U116e> <U1165> : "á…¯" U116f : á…Ÿá…® á…Ÿá…¥ = á…Ÿá…¯
+ <Multi_key> <U116e> <U1175> : "á…±" U1171 : á…Ÿá…® á…Ÿá…µ = á…Ÿá…±
+ <Multi_key> <U1173> <U1175> : "á…´" U1174 : á…Ÿá…³ á…Ÿá…µ = á…Ÿá…´
+ <Multi_key> <U1161> <U1169> : "á…¶" U1176 : á…Ÿá…¡ á…Ÿá…© = á…Ÿá…¶
+ <Multi_key> <U1161> <U116e> : "á…·" U1177 : á…Ÿá…¡ á…Ÿá…® = á…Ÿá…·
+ <Multi_key> <U1163> <U1169> : "á…¸" U1178 : á…Ÿá…£ á…Ÿá…© = á…Ÿá…¸
+ <Multi_key> <U1163> <U116d> : "á…¹" U1179 : á…Ÿá…£ á…Ÿá…­ = á…Ÿá…¹
+ <Multi_key> <U1165> <U1169> : "á…º" U117a : á…Ÿá…¥ á…Ÿá…© = á…Ÿá…º
+ <Multi_key> <U1165> <U116e> : "á…»" U117b : á…Ÿá…¥ á…Ÿá…® = á…Ÿá…»
+ <Multi_key> <U1165> <U1173> : "á…¼" U117c : á…Ÿá…¥ á…Ÿá…³ = á…Ÿá…¼
+ <Multi_key> <U1167> <U1169> : "á…½" U117d : á…Ÿá…§ á…Ÿá…© = á…Ÿá…½
+ <Multi_key> <U1167> <U116e> : "á…¾" U117e : á…Ÿá…§ á…Ÿá…® = á…Ÿá…¾
+ <Multi_key> <U1169> <U1165> : "á…¿" U117f : á…Ÿá…© á…Ÿá…¥ = á…Ÿá…¿
+ <Multi_key> <U1169> <U1166> : "ᆀ" U1180 : ᅟᅩ ᅟᅦ = ᅟᆀ
+ <Multi_key> <U1169> <U1168> : "á†" U1181 : á…Ÿá…© á…Ÿá…¨ = á…Ÿá†
+ <Multi_key> <U1169> <U1169> : "ᆂ" U1182 : ᅟᅩ ᅟᅩ = ᅟᆂ
+ <Multi_key> <U1169> <U116e> : "ᆃ" U1183 : ᅟᅩ ᅟᅮ = ᅟᆃ
+ <Multi_key> <U116d> <U1163> : "ᆄ" U1184 : ᅟᅭ ᅟᅣ = ᅟᆄ
+ <Multi_key> <U116d> <U1164> : "ᆅ" U1185 : ᅟᅭ ᅟᅤ = ᅟᆅ
+ <Multi_key> <U116d> <U1167> : "ᆆ" U1186 : ᅟᅭ ᅟᅧ = ᅟᆆ
+ <Multi_key> <U116d> <U1169> : "ᆇ" U1187 : ᅟᅭ ᅟᅩ = ᅟᆇ
+ <Multi_key> <U116d> <U1175> : "ᆈ" U1188 : ᅟᅭ ᅟᅵ = ᅟᆈ
+ <Multi_key> <U116e> <U1161> : "ᆉ" U1189 : ᅟᅮ ᅟᅡ = ᅟᆉ
+ <Multi_key> <U116e> <U1162> : "ᆊ" U118a : ᅟᅮ ᅟᅢ = ᅟᆊ
+ <Multi_key> <U116e> <U1168> : "ᆌ" U118c : ᅟᅮ ᅟᅨ = ᅟᆌ
+ <Multi_key> <U116e> <U116e> : "á†" U118d : á…Ÿá…® á…Ÿá…® = á…Ÿá†
+ <Multi_key> <U1172> <U1161> : "ᆎ" U118e : ᅟᅲ ᅟᅡ = ᅟᆎ
+ <Multi_key> <U1172> <U1165> : "á†" U118f : á…Ÿá…² á…Ÿá…¥ = á…Ÿá†
+ <Multi_key> <U1172> <U1166> : "á†" U1190 : á…Ÿá…² á…Ÿá…¦ = á…Ÿá†
+ <Multi_key> <U1172> <U1167> : "ᆑ" U1191 : ᅟᅲ ᅟᅧ = ᅟᆑ
+ <Multi_key> <U1172> <U1168> : "ᆒ" U1192 : ᅟᅲ ᅟᅨ = ᅟᆒ
+ <Multi_key> <U1172> <U116e> : "ᆓ" U1193 : ᅟᅲ ᅟᅮ = ᅟᆓ
+ <Multi_key> <U1172> <U1175> : "ᆔ" U1194 : ᅟᅲ ᅟᅵ = ᅟᆔ
+ <Multi_key> <U1173> <U116e> : "ᆕ" U1195 : ᅟᅳ ᅟᅮ = ᅟᆕ
+ <Multi_key> <U1173> <U1173> : "ᆖ" U1196 : ᅟᅳ ᅟᅳ = ᅟᆖ
+ <Multi_key> <U1174> <U116e> : "ᆗ" U1197 : ᅟᅴ ᅟᅮ = ᅟᆗ
+ <Multi_key> <U1175> <U1161> : "ᆘ" U1198 : ᅟᅵ ᅟᅡ = ᅟᆘ
+ <Multi_key> <U1175> <U1163> : "ᆙ" U1199 : ᅟᅵ ᅟᅣ = ᅟᆙ
+ <Multi_key> <U1175> <U1169> : "ᆚ" U119a : ᅟᅵ ᅟᅩ = ᅟᆚ
+ <Multi_key> <U1175> <U116e> : "ᆛ" U119b : ᅟᅵ ᅟᅮ = ᅟᆛ
+ <Multi_key> <U1175> <U1173> : "ᆜ" U119c : ᅟᅵ ᅟᅳ = ᅟᆜ
+ <Multi_key> <U1175> <U119e> : "á†" U119d : á…Ÿá…µ ᅟᆞ = á…Ÿá†
+ <Multi_key> <U119e> <U1165> : "ᆟ" U119f : ᅟᆞ ᅟᅥ = ᅟᆟ
+ <Multi_key> <U119e> <U116e> : "ᆠ" U11a0 : ᅟᆞ ᅟᅮ = ᅟᆠ
+ <Multi_key> <U119e> <U1175> : "ᆡ" U11a1 : ᅟᆞ ᅟᅵ = ᅟᆡ
+ <Multi_key> <U119e> <U119e> : "ᆢ" U11a2 : ᅟᆞ ᅟᆞ = ᅟᆢ
+ <Multi_key> <U11a8> <U11a8> : "ᆩ" U11a9 : ᅟᅠᆨ ᅟᅠᆨ = ᅟᅠᆩ
+ <Multi_key> <U11a8> <U11ba> : "ᆪ" U11aa : ᅟᅠᆨ ᅟᅠᆺ = ᅟᅠᆪ
+ <Multi_key> <U11ab> <U11bd> : "ᆬ" U11ac : ᅟᅠᆫ ᅟᅠᆽ = ᅟᅠᆬ
+ <Multi_key> <U11ab> <U11c2> : "ᆭ" U11ad : ᅟᅠᆫ ᅟᅠᇂ = ᅟᅠᆭ
+ <Multi_key> <U11af> <U11a8> : "ᆰ" U11b0 : ᅟᅠᆯ ᅟᅠᆨ = ᅟᅠᆰ
+ <Multi_key> <U11af> <U11b7> : "ᆱ" U11b1 : ᅟᅠᆯ ᅟᅠᆷ = ᅟᅠᆱ
+ <Multi_key> <U11af> <U11b8> : "ᆲ" U11b2 : ᅟᅠᆯ ᅟᅠᆸ = ᅟᅠᆲ
+ <Multi_key> <U11af> <U11ba> : "ᆳ" U11b3 : ᅟᅠᆯ ᅟᅠᆺ = ᅟᅠᆳ
+ <Multi_key> <U11af> <U11c0> : "ᆴ" U11b4 : ᅟᅠᆯ ᅟᅠᇀ = ᅟᅠᆴ
+ <Multi_key> <U11af> <U11c1> : "ᆵ" U11b5 : ᅟᅠᆯ ᅟᅠᇠ= ᅟᅠᆵ
+ <Multi_key> <U11af> <U11c2> : "ᆶ" U11b6 : ᅟᅠᆯ ᅟᅠᇂ = ᅟᅠᆶ
+ <Multi_key> <U11b8> <U11ba> : "ᆹ" U11b9 : ᅟᅠᆸ ᅟᅠᆺ = ᅟᅠᆹ
+ <Multi_key> <U11ba> <U11ba> : "ᆻ" U11bb : ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᆻ
+ <Multi_key> <U11a8> <U11af> : "ᇃ" U11c3 : ᅟᅠᆨ ᅟᅠᆯ = ᅟᅠᇃ
+ <Multi_key> <U11ab> <U11a8> : "ᇅ" U11c5 : ᅟᅠᆫ ᅟᅠᆨ = ᅟᅠᇅ
+ <Multi_key> <U11ab> <U11ae> : "ᇆ" U11c6 : ᅟᅠᆫ ᅟᅠᆮ = ᅟᅠᇆ
+ <Multi_key> <U11ab> <U11ba> : "ᇇ" U11c7 : ᅟᅠᆫ ᅟᅠᆺ = ᅟᅠᇇ
+ <Multi_key> <U11ab> <U11eb> : "ᇈ" U11c8 : ᅟᅠᆫ ᅟᅠᇫ = ᅟᅠᇈ
+ <Multi_key> <U11ab> <U11c0> : "ᇉ" U11c9 : ᅟᅠᆫ ᅟᅠᇀ = ᅟᅠᇉ
+ <Multi_key> <U11ae> <U11a8> : "ᇊ" U11ca : ᅟᅠᆮ ᅟᅠᆨ = ᅟᅠᇊ
+ <Multi_key> <U11ae> <U11af> : "ᇋ" U11cb : ᅟᅠᆮ ᅟᅠᆯ = ᅟᅠᇋ
+ <Multi_key> <U11af> <U11ab> : "á‡" U11cd : ᅟᅠᆯ ᅟᅠᆫ = á…Ÿá… á‡
+ <Multi_key> <U11af> <U11ae> : "ᇎ" U11ce : ᅟᅠᆯ ᅟᅠᆮ = ᅟᅠᇎ
+ <Multi_key> <U11af> <U11af> : "á‡" U11d0 : ᅟᅠᆯ ᅟᅠᆯ = á…Ÿá… á‡
+ <Multi_key> <U11af> <U11eb> : "ᇗ" U11d7 : ᅟᅠᆯ ᅟᅠᇫ = ᅟᅠᇗ
+ <Multi_key> <U11af> <U11bf> : "ᇘ" U11d8 : ᅟᅠᆯ ᅟᅠᆿ = ᅟᅠᇘ
+ <Multi_key> <U11af> <U11f9> : "ᇙ" U11d9 : ᅟᅠᆯ ᅟᅠᇹ = ᅟᅠᇙ
+ <Multi_key> <U11b7> <U11a8> : "ᇚ" U11da : ᅟᅠᆷ ᅟᅠᆨ = ᅟᅠᇚ
+ <Multi_key> <U11b7> <U11af> : "ᇛ" U11db : ᅟᅠᆷ ᅟᅠᆯ = ᅟᅠᇛ
+ <Multi_key> <U11b7> <U11b8> : "ᇜ" U11dc : ᅟᅠᆷ ᅟᅠᆸ = ᅟᅠᇜ
+ <Multi_key> <U11b7> <U11ba> : "á‡" U11dd : ᅟᅠᆷ ᅟᅠᆺ = á…Ÿá… á‡
+ <Multi_key> <U11b7> <U11eb> : "ᇟ" U11df : ᅟᅠᆷ ᅟᅠᇫ = ᅟᅠᇟ
+ <Multi_key> <U11b7> <U11be> : "ᇠ" U11e0 : ᅟᅠᆷ ᅟᅠᆾ = ᅟᅠᇠ
+ <Multi_key> <U11b7> <U11c2> : "ᇡ" U11e1 : ᅟᅠᆷ ᅟᅠᇂ = ᅟᅠᇡ
+ <Multi_key> <U11b7> <U11bc> : "ᇢ" U11e2 : ᅟᅠᆷ ᅟᅠᆼ = ᅟᅠᇢ
+ <Multi_key> <U11b8> <U11af> : "ᇣ" U11e3 : ᅟᅠᆸ ᅟᅠᆯ = ᅟᅠᇣ
+ <Multi_key> <U11b8> <U11c1> : "ᇤ" U11e4 : ᅟᅠᆸ ᅟᅠᇠ= ᅟᅠᇤ
+ <Multi_key> <U11b8> <U11c2> : "ᇥ" U11e5 : ᅟᅠᆸ ᅟᅠᇂ = ᅟᅠᇥ
+ <Multi_key> <U11b8> <U11bc> : "ᇦ" U11e6 : ᅟᅠᆸ ᅟᅠᆼ = ᅟᅠᇦ
+ <Multi_key> <U11ba> <U11a8> : "ᇧ" U11e7 : ᅟᅠᆺ ᅟᅠᆨ = ᅟᅠᇧ
+ <Multi_key> <U11ba> <U11ae> : "ᇨ" U11e8 : ᅟᅠᆺ ᅟᅠᆮ = ᅟᅠᇨ
+ <Multi_key> <U11ba> <U11af> : "ᇩ" U11e9 : ᅟᅠᆺ ᅟᅠᆯ = ᅟᅠᇩ
+ <Multi_key> <U11ba> <U11b8> : "ᇪ" U11ea : ᅟᅠᆺ ᅟᅠᆸ = ᅟᅠᇪ
+ <Multi_key> <U11bc> <U11a8> : "ᇬ" U11ec : ᅟᅠᆼ ᅟᅠᆨ = ᅟᅠᇬ
+ <Multi_key> <U11bc> <U11bc> : "ᇮ" U11ee : ᅟᅠᆼ ᅟᅠᆼ = ᅟᅠᇮ
+ <Multi_key> <U11bc> <U11bf> : "ᇯ" U11ef : ᅟᅠᆼ ᅟᅠᆿ = ᅟᅠᇯ
+ <Multi_key> <U11f0> <U11ba> : "ᇱ" U11f1 : ᅟᅠᇰ ᅟᅠᆺ = ᅟᅠᇱ
+ <Multi_key> <U11f0> <U11eb> : "ᇲ" U11f2 : ᅟᅠᇰ ᅟᅠᇫ = ᅟᅠᇲ
+ <Multi_key> <U11c1> <U11b8> : "ᇳ" U11f3 : ᅟᅠᇠᅟᅠᆸ = ᅟᅠᇳ
+ <Multi_key> <U11c1> <U11bc> : "ᇴ" U11f4 : ᅟᅠᇠᅟᅠᆼ = ᅟᅠᇴ
+ <Multi_key> <U11c2> <U11ab> : "ᇵ" U11f5 : ᅟᅠᇂ ᅟᅠᆫ = ᅟᅠᇵ
+ <Multi_key> <U11c2> <U11af> : "ᇶ" U11f6 : ᅟᅠᇂ ᅟᅠᆯ = ᅟᅠᇶ
+ <Multi_key> <U11c2> <U11b7> : "ᇷ" U11f7 : ᅟᅠᇂ ᅟᅠᆷ = ᅟᅠᇷ
+ <Multi_key> <U11c2> <U11b8> : "ᇸ" U11f8 : ᅟᅠᇂ ᅟᅠᆸ = ᅟᅠᇸ
+ <Multi_key> <U1121> <U1100> : "ᄢ" U1122 : ᄡᅠ ᄀᅠ = ᄢᅠ
+ <Multi_key> <U1121> <U1103> : "ᄣ" U1123 : ᄡᅠ ᄃᅠ = ᄣᅠ
+ <Multi_key> <U1121> <U1107> : "ᄤ" U1124 : ᄡᅠ ᄇᅠ = ᄤᅠ
+ <Multi_key> <U1121> <U1109> : "ᄥ" U1125 : ᄡᅠ ᄉᅠ = ᄥᅠ
+ <Multi_key> <U1121> <U110c> : "ᄦ" U1126 : ᄡᅠ ᄌᅠ = ᄦᅠ
+ <Multi_key> <U1108> <U110b> : "ᄬ" U112c : ᄈᅠ ᄋᅠ = ᄬᅠ
+ <Multi_key> <U1132> <U1100> : "ᄳ" U1133 : ᄲᅠ ᄀᅠ = ᄳᅠ
+ <Multi_key> <U110a> <U1109> : "ᄴ" U1134 : ᄊᅠ ᄉᅠ = ᄴᅠ
+ <Multi_key> <U116a> <U1175> : "á…«" U116b : á…Ÿá…ª á…Ÿá…µ = á…Ÿá…«
+ <Multi_key> <U116f> <U1175> : "á…°" U1170 : á…Ÿá…¯ á…Ÿá…µ = á…Ÿá…°
+ <Multi_key> <U116f> <U1173> : "ᆋ" U118b : ᅟᅯ ᅟᅳ = ᅟᆋ
+ <Multi_key> <U11aa> <U11a8> : "ᇄ" U11c4 : ᅟᅠᆪ ᅟᅠᆨ = ᅟᅠᇄ
+ <Multi_key> <U11b0> <U11ba> : "ᇌ" U11cc : ᅟᅠᆰ ᅟᅠᆺ = ᅟᅠᇌ
+ <Multi_key> <U11ce> <U11c2> : "á‡" U11cf : ᅟᅠᇎ ᅟᅠᇂ = á…Ÿá… á‡
+ <Multi_key> <U11b1> <U11a8> : "ᇑ" U11d1 : ᅟᅠᆱ ᅟᅠᆨ = ᅟᅠᇑ
+ <Multi_key> <U11b1> <U11ba> : "ᇒ" U11d2 : ᅟᅠᆱ ᅟᅠᆺ = ᅟᅠᇒ
+ <Multi_key> <U11b2> <U11ba> : "ᇓ" U11d3 : ᅟᅠᆲ ᅟᅠᆺ = ᅟᅠᇓ
+ <Multi_key> <U11b2> <U11c2> : "ᇔ" U11d4 : ᅟᅠᆲ ᅟᅠᇂ = ᅟᅠᇔ
+ <Multi_key> <U11b2> <U11bc> : "ᇕ" U11d5 : ᅟᅠᆲ ᅟᅠᆼ = ᅟᅠᇕ
+ <Multi_key> <U11b3> <U11ba> : "ᇖ" U11d6 : ᅟᅠᆳ ᅟᅠᆺ = ᅟᅠᇖ
+ <Multi_key> <U11dd> <U11ba> : "ᇞ" U11de : ᅟᅠᇠᅟᅠᆺ = ᅟᅠᇞ
+ <Multi_key> <U11ec> <U11a8> : "ᇭ" U11ed : ᅟᅠᇬ ᅟᅠᆨ = ᅟᅠᇭ
+ <Multi_key> <U1107> <U112d> : "ᄢ" U1122 : ᄇᅠ ᄭᅠ = ᄢᅠ
+ <Multi_key> <U1107> <U112f> : "ᄣ" U1123 : ᄇᅠ ᄯᅠ = ᄣᅠ
+ <Multi_key> <U1107> <U1132> : "ᄤ" U1124 : ᄇᅠ ᄲᅠ = ᄤᅠ
+ <Multi_key> <U1107> <U110a> : "ᄥ" U1125 : ᄇᅠ ᄊᅠ = ᄥᅠ
+ <Multi_key> <U1107> <U1136> : "ᄦ" U1126 : ᄇᅠ ᄶᅠ = ᄦᅠ
+ <Multi_key> <U1107> <U112b> : "ᄬ" U112c : ᄇᅠ ᄫᅠ = ᄬᅠ
+ <Multi_key> <U1109> <U111e> : "ᄳ" U1133 : ᄉᅠ ᄞᅠ = ᄳᅠ
+ <Multi_key> <U1109> <U110a> : "ᄴ" U1134 : ᄉᅠ ᄊᅠ = ᄴᅠ
+ <Multi_key> <U1169> <U1162> : "á…«" U116b : á…Ÿá…© á…Ÿá…¢ = á…Ÿá…«
+ <Multi_key> <U116e> <U1166> : "á…°" U1170 : á…Ÿá…® á…Ÿá…¦ = á…Ÿá…°
+ <Multi_key> <U116e> <U117c> : "ᆋ" U118b : ᅟᅮ ᅟᅼ = ᅟᆋ
+ <Multi_key> <U11a8> <U11e7> : "ᇄ" U11c4 : ᅟᅠᆨ ᅟᅠᇧ = ᅟᅠᇄ
+ <Multi_key> <U11af> <U11aa> : "ᇌ" U11cc : ᅟᅠᆯ ᅟᅠᆪ = ᅟᅠᇌ
+ <Multi_key> <U11af> <U11da> : "ᇑ" U11d1 : ᅟᅠᆯ ᅟᅠᇚ = ᅟᅠᇑ
+ <Multi_key> <U11af> <U11dd> : "ᇒ" U11d2 : ᅟᅠᆯ ᅟᅠᇠ= ᅟᅠᇒ
+ <Multi_key> <U11af> <U11b9> : "ᇓ" U11d3 : ᅟᅠᆯ ᅟᅠᆹ = ᅟᅠᇓ
+ <Multi_key> <U11af> <U11e5> : "ᇔ" U11d4 : ᅟᅠᆯ ᅟᅠᇥ = ᅟᅠᇔ
+ <Multi_key> <U11af> <U11e6> : "ᇕ" U11d5 : ᅟᅠᆯ ᅟᅠᇦ = ᅟᅠᇕ
+ <Multi_key> <U11af> <U11bb> : "ᇖ" U11d6 : ᅟᅠᆯ ᅟᅠᆻ = ᅟᅠᇖ
+ <Multi_key> <U11b7> <U11bb> : "ᇞ" U11de : ᅟᅠᆷ ᅟᅠᆻ = ᅟᅠᇞ
+ <Multi_key> <U11bc> <U11a9> : "ᇭ" U11ed : ᅟᅠᆼ ᅟᅠᆩ = ᅟᅠᇭ
-TYPE_OF_INPUT: OCTET # HEX or OCTET. The default is HEX.
- # If it's HEX, valid input is: 0-9,
- # a-f, A-F.
- # If it's OCTET, valid input is: 0-7
-#end of attributes
-#actions
-Ctrl<w> : DO_LOOKUP
-<space> : DO_CONV
- # force to convert input sequence into
- # a character before MAX_INPUT_LENGTH
- # of characters are input.
-Ctrl<n> : NEXT_PAGE
-Ctrl<p> : PREV_PAGE
-Ctrl<a> : TOP_PAGE
-Ctrl<e> : LAST_PAGE
-<Right> : NEXT_CAND
-<Left> : PREV_CAND
-<Up> : UP_CAND
-<Down> : DOWN_CAND
-Ctrl<k> : SELECT_CAND
-#end of actions
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
-
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <l> <l> : SWITCH_STATE_TO "[ Lookup ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
-END_STATE
-
-STATE "[ Lookup ]"
-STATE_TYPE: LOOKUP
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-<Multi_key> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-<Multi_key> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-<Multi_key> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-<Multi_key> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-<Multi_key> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-<Multi_key> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-<Multi_key> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-<Multi_key> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-<Multi_key> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-<Multi_key> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-<Multi_key> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
-
-Ctrl<T> <c> <c> : SWITCH_STATE_TO "[ Cyrillic ]"
-Ctrl<T> <g> <g> : SWITCH_STATE_TO "[ Greek ]"
-Ctrl<T> <t> <t> : SWITCH_STATE_TO "[ Thai ]"
-Ctrl<T> <a> <r> : SWITCH_STATE_TO "[ Arabic ]"
-Ctrl<T> <h> <h> : SWITCH_STATE_TO "[ Hebrew ]"
-Ctrl<T> <u> <h> : SWITCH_STATE_TO "[ Unicode Hex ]"
-Ctrl<T> <u> <o> : SWITCH_STATE_TO "[ Unicode Octal ]"
-Ctrl<T> <j> <a> : SWITCH_STATE_TO "[ Japanese ]"
-Ctrl<T> <k> <o> : SWITCH_STATE_TO "[ Korean ]"
-Ctrl<T> <s> <c> : SWITCH_STATE_TO "[ S-Chinese ]"
-Ctrl<T> <t> <c> : SWITCH_STATE_TO "[ T-Chinese ]"
-
-#attributes
-MAX_NUMBER_OF_ROWS : 6
-MAX_NUMBER_OF_COLUMNS : 16
-MAX_NUMBER_OF_CANDIDATES : 80 # <= 94 best if it's multiple of 16
-TITLE_STRING: "Lookup Selection Window"
-FONTSET: "-dt-interface user-medium-r-normal-s*utf*-*-*-*-*-*-*-*-*"
-POSITION: CURSOR # CURSOR/CLIENT
-PLACEMENT: BOTTOM # TOP/BOTTOM/LEFT/RIGHT
-"a - Basic Latin" : 0x0000 0x007f
-"b - Latin 1" : 0x0080 0x00ff
-"c - Latin Extended A" : 0x0100 0x017f
-"d - Latin Extended B" : 0x0180 0x024f
-# N/A IPA Extension : 0x0250 0x02af
-"e - Spacing Modifier Letters" : 0x02b0 0x02ff
-# N/A Combining Diaetrical Marks : 0x0300 0x036f
-"f - Greek" : 0x0370 0x03ff
-"g - Cyrillic" : 0x0400 0x04ff
-# N/A Armenian : 0x0530 0x058f
-"h - Hebrew" : 0x0590 0x05ff
-"i - Arabic" : 0x0600 0x06ff
-# N/A Davangari : 0x0900 0x097f
-# N/A Bengali : 0x0980 0x09ff
-# N/A Gurmukhi : 0x0a00 0x0a7f
-# N/A Gujarati : 0x0a80 0x0aff
-# N/A Oriya : 0x0b00 0x0b7f
-# N/A Tamil : 0x0b80 0x0bff
-# N/A Telugu : 0x0c00 0x0c7f
-# N/A Kannada : 0x0c80 0x0cff
-# N/A Malayalam : 0x0d00 0x0d7f
-"j - Thai" : 0x0e00 0x0e7f
-# N/A Lao : 0x0e80 0x0eff
-# N/A Tibetan : 0x0f00 0x0fbf
-# N/A Georgian : 0x10a0 0x10ff
-# N/A Hangul Jamo : 0x1100 0x11ff
-# N/A Latin Extended Additional : 0x1e00 0x1eff
-# N/A Greek Extended : 0x1f00 0x1fff
-"k - General Punctuation" : 0x2000 0x206f
-"l - Superscripts Subscripts" : 0x2070 0x209f
-"m - Currency Symbols" : 0x20a0 0x20cf
-# N/A Combining Diacritical Marks for Symbols : 0x20d0 0x20ff
-"n - Letterlike Symbols" : 0x2100 0x214f
-"o - Number Forms" : 0x2150 0x218f
-"p - Arrows" : 0x2190 0x21ff
-"q - Mathematical Operators" : 0x2200 0x22ff
-"r - Miscellaneous Techical" : 0x2300 0x23ff
-# N/A Control Pictures : 0x2400 0x243f
-# N/A Optical Character Recognition : 0x2440 0x245f
-"s - Enclosed Alphanumerics" : 0x2460 0x24ff
-"t - Box Drawing" : 0x2500 0x257f
-"u - Block Elements" : 0x2580 0x259f
-"v - Geometric Shapes" : 0x25a0 0x25ff
-"w - Miscellaneous Symbols" : 0x2600 0x26ff
-# N/A Dingbats : 0x2700 0x27bf
-"x - CJK Symbols and Punctuation" : 0x3000 0x303f
-"y - Hiragana" : 0x3040 0x309f
-"z - Katakana" : 0x30a0 0x30ff
-"0 - Bopomofo" : 0x3100 0x312f
-"1 - Hangul Compatibility Jamo" : 0x3130 0x318f
-# N/A Kanbun : 0x3190 0x319f
-"2 - Enclosed CJK Letters and Months" : 0x3200 0x32ff
-"3 - CJK Compatibility" : 0x3300 0x33ff
-"4 - CJK Unified Ideographs" : 0x4e00 0x9fa5
-"5 - Hangul Syllables" : 0xac00 0xd7a3
-# N/A High Surrogates : 0xd800 0xdb7f
-# N/A Private Use High Surrogates : 0xdb80 0xdbff
-# N/A Low Surrogates : 0xdc00 0xdfff
-# N/A Private Use Area : 0xe000 0xf8ff
-"6 - CJK Compatibility Ideographs" : 0xf900 0xfaff
-# N/A Alphabetic Presentation Forms : 0xfb00 0xfb4f
-# N/A Arabic Presentation Forms-A : 0xfb50 0xfdff
-# N/A Combining Half Marks : 0xfe20 0xfe2f
-"7 - CJK Compatibility Forms" : 0xfe30 0xfe4f
-"8 - Small Form Variants" : 0xfe50 0xfe6f
-# N/A Arabic Presentation Forms-B : 0xfe70 0xfeff
-"9 - Halfwidth and Fullwidth Forms" : 0xff00 0xffef
-"/ - Specials" : 0xfff0 0xffff
-#end of attributes
-
-#actions
-Ctrl<n> : NEXT_PAGE
-Ctrl<p> : PREV_PAGE
-Ctrl<a> : TOP_PAGE
-Ctrl<e> : LAST_PAGE
-<Right> : NEXT_CAND
-<Left> : PREV_CAND
-<Up> : UP_CAND
-<Down> : DOWN_CAND
-Ctrl<k> : SELECT_CAND
-#end of actions
-END_STATE
-
-STATE "[ Japanese ]"
-STATE_TYPE: REMOTE_IM
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-LANGUAGE : ja
-END_STATE
-
-STATE "[ Korean ]"
-STATE_TYPE: REMOTE_IM
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-
-LANGUAGE : ko
-END_STATE
-
-STATE "[ S-Chinese ]"
-STATE_TYPE: REMOTE_IM
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-
-LANGUAGE : zh_CN
-END_STATE
-
-STATE "[ T-Chinese ]"
-STATE_TYPE: REMOTE_IM
-Ctrl<space> : SWITCH_STATE_TO "[ English/European ]"
-
-LANGUAGE : zh_TW
-END_STATE
+<dead_circumflex> <Multi_key> <underscore> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underscore> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<dead_circumflex> <Multi_key> <underbar> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underbar> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<dead_circumflex> <2> : "²" U00B2 # SUPERSCRIPT TWO
+<Multi_key> <asciicircum> <2> : "²" U00B2 # SUPERSCRIPT TWO
+<dead_circumflex> <KP_Space> : "²" U00B2 # SUPERSCRIPT TWO
+<Multi_key> <asciicircum> <KP_Space> : "²" U00B2 # SUPERSCRIPT TWO
+<dead_circumflex> <KP_2> : "²" U00B2 # SUPERSCRIPT TWO
+<Multi_key> <asciicircum> <KP_2> : "²" U00B2 # SUPERSCRIPT TWO
+<dead_circumflex> <3> : "³" U00B3 # SUPERSCRIPT THREE
+<Multi_key> <asciicircum> <3> : "³" U00B3 # SUPERSCRIPT THREE
+<dead_circumflex> <KP_3> : "³" U00B3 # SUPERSCRIPT THREE
+<Multi_key> <asciicircum> <KP_3> : "³" U00B3 # SUPERSCRIPT THREE
+<dead_circumflex> <1> : "¹" U00B9 # SUPERSCRIPT ONE
+<Multi_key> <asciicircum> <1> : "¹" U00B9 # SUPERSCRIPT ONE
+<dead_circumflex> <KP_1> : "¹" U00B9 # SUPERSCRIPT ONE
+<Multi_key> <asciicircum> <KP_1> : "¹" U00B9 # SUPERSCRIPT ONE
+<dead_circumflex> <Multi_key> <underscore> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underscore> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<dead_circumflex> <Multi_key> <underbar> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underbar> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<dead_grave> <A> : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+<Multi_key> <grave> <A> : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+<combining_grave> <A> : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+<dead_acute> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<Multi_key> <acute> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<Multi_key> <apostrophe> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<combining_acute> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<dead_circumflex> <A> : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <A> : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<dead_tilde> <A> : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE
+<Multi_key> <asciitilde> <A> : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE
+<combining_tilde> <A> : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE
+<dead_diaeresis> <A> : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <A> : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+<dead_abovering> <A> : "Ã…" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+<Multi_key> <o> <A> : "Ã…" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+<dead_cedilla> <C> : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+<Multi_key> <comma> <C> : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+<dead_grave> <E> : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+<Multi_key> <grave> <E> : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+<combining_grave> <E> : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+<dead_acute> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<Multi_key> <acute> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<Multi_key> <apostrophe> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<combining_acute> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<dead_circumflex> <E> : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <E> : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<dead_diaeresis> <E> : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <E> : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+<dead_grave> <I> : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE
+<Multi_key> <grave> <I> : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE
+<combining_grave> <I> : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE
+<dead_acute> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<Multi_key> <acute> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<Multi_key> <apostrophe> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<combining_acute> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<dead_circumflex> <I> : "ÃŽ" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <I> : "ÃŽ" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<dead_diaeresis> <I> : "Ã" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <I> : "Ã" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+<dead_tilde> <N> : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE
+<Multi_key> <asciitilde> <N> : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE
+<combining_tilde> <N> : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE
+<dead_grave> <O> : "Ã’" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+<Multi_key> <grave> <O> : "Ã’" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+<combining_grave> <O> : "Ã’" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+<dead_acute> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<Multi_key> <acute> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<Multi_key> <apostrophe> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<combining_acute> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<dead_circumflex> <O> : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <O> : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<dead_tilde> <O> : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE
+<Multi_key> <asciitilde> <O> : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE
+<combining_tilde> <O> : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE
+<dead_diaeresis> <O> : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <O> : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+<Multi_key> <slash> <O> : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE
+<Multi_key> <KP_Divide> <O> : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE
+<dead_grave> <U> : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+<Multi_key> <grave> <U> : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+<combining_grave> <U> : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+<dead_acute> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<Multi_key> <acute> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<Multi_key> <apostrophe> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<combining_acute> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<dead_circumflex> <U> : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <U> : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<dead_diaeresis> <U> : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <U> : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+<dead_acute> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<Multi_key> <acute> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<Multi_key> <apostrophe> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<combining_acute> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<dead_grave> <a> : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE
+<Multi_key> <grave> <a> : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE
+<combining_grave> <a> : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE
+<dead_acute> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<Multi_key> <acute> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<Multi_key> <apostrophe> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<combining_acute> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<dead_circumflex> <a> : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <a> : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+<dead_tilde> <a> : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE
+<Multi_key> <asciitilde> <a> : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE
+<combining_tilde> <a> : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE
+<dead_diaeresis> <a> : "ä" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <a> : "ä" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+<dead_abovering> <a> : "Ã¥" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+<Multi_key> <o> <a> : "Ã¥" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+<dead_cedilla> <c> : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA
+<Multi_key> <comma> <c> : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA
+<dead_grave> <e> : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE
+<Multi_key> <grave> <e> : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE
+<combining_grave> <e> : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE
+<dead_acute> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<Multi_key> <acute> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<Multi_key> <apostrophe> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<combining_acute> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<dead_circumflex> <e> : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <e> : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+<dead_diaeresis> <e> : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <e> : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS
+<dead_grave> <i> : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE
+<Multi_key> <grave> <i> : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE
+<combining_grave> <i> : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE
+<dead_acute> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<Multi_key> <acute> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<Multi_key> <apostrophe> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<combining_acute> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<dead_circumflex> <i> : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <i> : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+<dead_diaeresis> <i> : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <i> : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS
+<dead_tilde> <n> : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE
+<Multi_key> <asciitilde> <n> : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE
+<combining_tilde> <n> : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE
+<dead_grave> <o> : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE
+<Multi_key> <grave> <o> : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE
+<combining_grave> <o> : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE
+<dead_acute> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<Multi_key> <acute> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<Multi_key> <apostrophe> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<combining_acute> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<dead_circumflex> <o> : "ô" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <o> : "ô" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+<dead_tilde> <o> : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE
+<Multi_key> <asciitilde> <o> : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE
+<combining_tilde> <o> : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE
+<dead_diaeresis> <o> : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <o> : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+<Multi_key> <slash> <o> : "ø" U00F8 # LATIN SMALL LETTER O WITH STROKE
+<Multi_key> <KP_Divide> <o> : "ø" U00F8 # LATIN SMALL LETTER O WITH STROKE
+<dead_grave> <u> : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE
+<Multi_key> <grave> <u> : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE
+<combining_grave> <u> : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE
+<dead_acute> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<Multi_key> <acute> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<Multi_key> <apostrophe> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<combining_acute> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<dead_circumflex> <u> : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <u> : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+<dead_diaeresis> <u> : "ü" U00FC # LATIN SMALL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <u> : "ü" U00FC # LATIN SMALL LETTER U WITH DIAERESIS
+<dead_acute> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<Multi_key> <acute> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<Multi_key> <apostrophe> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<combining_acute> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<dead_diaeresis> <y> : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+<Multi_key> <quotedbl> <y> : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+<dead_macron> <A> : "Ä€" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<Multi_key> <macron> <A> : "Ä€" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<Multi_key> <underscore> <A> : "Ä€" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<dead_macron> <a> : "Ä" U0101 # LATIN SMALL LETTER A WITH MACRON
+<Multi_key> <macron> <a> : "Ä" U0101 # LATIN SMALL LETTER A WITH MACRON
+<Multi_key> <underscore> <a> : "Ä" U0101 # LATIN SMALL LETTER A WITH MACRON
+<dead_breve> <A> : "Ä‚" U0102 # LATIN CAPITAL LETTER A WITH BREVE
+<Multi_key> <U> <A> : "Ä‚" U0102 # LATIN CAPITAL LETTER A WITH BREVE
+<Multi_key> <b> <A> : "Ä‚" U0102 # LATIN CAPITAL LETTER A WITH BREVE
+<dead_breve> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE
+<Multi_key> <U> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE
+<Multi_key> <b> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE
+<dead_ogonek> <A> : "Ä„" U0104 # LATIN CAPITAL LETTER A WITH OGONEK
+<Multi_key> <semicolon> <A> : "Ä„" U0104 # LATIN CAPITAL LETTER A WITH OGONEK
+<dead_ogonek> <a> : "Ä…" U0105 # LATIN SMALL LETTER A WITH OGONEK
+<Multi_key> <semicolon> <a> : "Ä…" U0105 # LATIN SMALL LETTER A WITH OGONEK
+<dead_acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<Multi_key> <acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<Multi_key> <apostrophe> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<combining_acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<dead_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<Multi_key> <acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<Multi_key> <apostrophe> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<combining_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<dead_circumflex> <C> : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <C> : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<dead_circumflex> <c> : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <c> : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
+<dead_abovedot> <C> : "ÄŠ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
+<Multi_key> <period> <C> : "ÄŠ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
+<dead_abovedot> <c> : "Ä‹" U010B # LATIN SMALL LETTER C WITH DOT ABOVE
+<Multi_key> <period> <c> : "Ä‹" U010B # LATIN SMALL LETTER C WITH DOT ABOVE
+<dead_caron> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON
+<Multi_key> <c> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON
+<dead_caron> <c> : "Ä" U010D # LATIN SMALL LETTER C WITH CARON
+<Multi_key> <c> <c> : "Ä" U010D # LATIN SMALL LETTER C WITH CARON
+<dead_caron> <D> : "ÄŽ" U010E # LATIN CAPITAL LETTER D WITH CARON
+<Multi_key> <c> <D> : "ÄŽ" U010E # LATIN CAPITAL LETTER D WITH CARON
+<dead_caron> <d> : "Ä" U010F # LATIN SMALL LETTER D WITH CARON
+<Multi_key> <c> <d> : "Ä" U010F # LATIN SMALL LETTER D WITH CARON
+<Multi_key> <slash> <D> : "Ä" U0110 # LATIN CAPITAL LETTER D WITH STROKE
+<Multi_key> <KP_Divide> <D> : "Ä" U0110 # LATIN CAPITAL LETTER D WITH STROKE
+<Multi_key> <slash> <d> : "Ä‘" U0111 # LATIN SMALL LETTER D WITH STROKE
+<Multi_key> <KP_Divide> <d> : "Ä‘" U0111 # LATIN SMALL LETTER D WITH STROKE
+<dead_macron> <E> : "Ä’" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<Multi_key> <macron> <E> : "Ä’" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<Multi_key> <underscore> <E> : "Ä’" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<dead_macron> <e> : "Ä“" U0113 # LATIN SMALL LETTER E WITH MACRON
+<Multi_key> <macron> <e> : "Ä“" U0113 # LATIN SMALL LETTER E WITH MACRON
+<Multi_key> <underscore> <e> : "Ä“" U0113 # LATIN SMALL LETTER E WITH MACRON
+<dead_breve> <E> : "Ä”" U0114 # LATIN CAPITAL LETTER E WITH BREVE
+<Multi_key> <U> <E> : "Ä”" U0114 # LATIN CAPITAL LETTER E WITH BREVE
+<Multi_key> <b> <E> : "Ä”" U0114 # LATIN CAPITAL LETTER E WITH BREVE
+<dead_breve> <e> : "Ä•" U0115 # LATIN SMALL LETTER E WITH BREVE
+<Multi_key> <U> <e> : "Ä•" U0115 # LATIN SMALL LETTER E WITH BREVE
+<Multi_key> <b> <e> : "Ä•" U0115 # LATIN SMALL LETTER E WITH BREVE
+<dead_abovedot> <E> : "Ä–" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
+<Multi_key> <period> <E> : "Ä–" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
+<dead_abovedot> <e> : "Ä—" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE
+<Multi_key> <period> <e> : "Ä—" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE
+<dead_ogonek> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK
+<Multi_key> <semicolon> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK
+<dead_ogonek> <e> : "Ä™" U0119 # LATIN SMALL LETTER E WITH OGONEK
+<Multi_key> <semicolon> <e> : "Ä™" U0119 # LATIN SMALL LETTER E WITH OGONEK
+<dead_caron> <E> : "Äš" U011A # LATIN CAPITAL LETTER E WITH CARON
+<Multi_key> <c> <E> : "Äš" U011A # LATIN CAPITAL LETTER E WITH CARON
+<dead_caron> <e> : "Ä›" U011B # LATIN SMALL LETTER E WITH CARON
+<Multi_key> <c> <e> : "Ä›" U011B # LATIN SMALL LETTER E WITH CARON
+<dead_circumflex> <G> : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <G> : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<dead_circumflex> <g> : "Ä" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <g> : "Ä" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
+<dead_breve> <G> : "Äž" U011E # LATIN CAPITAL LETTER G WITH BREVE
+<Multi_key> <U> <G> : "Äž" U011E # LATIN CAPITAL LETTER G WITH BREVE
+<Multi_key> <b> <G> : "Äž" U011E # LATIN CAPITAL LETTER G WITH BREVE
+<dead_breve> <g> : "ÄŸ" U011F # LATIN SMALL LETTER G WITH BREVE
+<Multi_key> <U> <g> : "ÄŸ" U011F # LATIN SMALL LETTER G WITH BREVE
+<Multi_key> <b> <g> : "ÄŸ" U011F # LATIN SMALL LETTER G WITH BREVE
+<dead_abovedot> <G> : "Ä " U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
+<Multi_key> <period> <G> : "Ä " U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
+<dead_abovedot> <g> : "Ä¡" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE
+<Multi_key> <period> <g> : "Ä¡" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE
+<dead_cedilla> <G> : "Ä¢" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA
+<Multi_key> <comma> <G> : "Ä¢" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA
+<dead_cedilla> <g> : "Ä£" U0123 # LATIN SMALL LETTER G WITH CEDILLA
+<Multi_key> <comma> <g> : "Ä£" U0123 # LATIN SMALL LETTER G WITH CEDILLA
+<dead_circumflex> <H> : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <H> : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<dead_circumflex> <h> : "Ä¥" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <h> : "Ä¥" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
+<Multi_key> <slash> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE
+<Multi_key> <KP_Divide> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE
+<Multi_key> <slash> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE
+<Multi_key> <KP_Divide> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE
+<dead_tilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE
+<Multi_key> <asciitilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE
+<combining_tilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE
+<dead_tilde> <i> : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE
+<Multi_key> <asciitilde> <i> : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE
+<combining_tilde> <i> : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE
+<dead_macron> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<Multi_key> <macron> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<Multi_key> <underscore> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<dead_macron> <i> : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON
+<Multi_key> <macron> <i> : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON
+<Multi_key> <underscore> <i> : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON
+<dead_breve> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE
+<Multi_key> <U> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE
+<Multi_key> <b> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE
+<dead_breve> <i> : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE
+<Multi_key> <U> <i> : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE
+<Multi_key> <b> <i> : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE
+<dead_ogonek> <I> : "Ä®" U012E # LATIN CAPITAL LETTER I WITH OGONEK
+<Multi_key> <semicolon> <I> : "Ä®" U012E # LATIN CAPITAL LETTER I WITH OGONEK
+<dead_ogonek> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK
+<Multi_key> <semicolon> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK
+<dead_abovedot> <I> : "Ä°" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
+<Multi_key> <period> <I> : "Ä°" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
+<dead_circumflex> <J> : "Ä´" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <J> : "Ä´" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<dead_circumflex> <j> : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <j> : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
+<dead_cedilla> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA
+<Multi_key> <comma> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA
+<dead_cedilla> <k> : "Ä·" U0137 # LATIN SMALL LETTER K WITH CEDILLA
+<Multi_key> <comma> <k> : "Ä·" U0137 # LATIN SMALL LETTER K WITH CEDILLA
+<dead_acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<Multi_key> <acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<Multi_key> <apostrophe> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<combining_acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<dead_acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<Multi_key> <acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<Multi_key> <apostrophe> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<combining_acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<dead_cedilla> <L> : "Ä»" U013B # LATIN CAPITAL LETTER L WITH CEDILLA
+<Multi_key> <comma> <L> : "Ä»" U013B # LATIN CAPITAL LETTER L WITH CEDILLA
+<dead_cedilla> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA
+<Multi_key> <comma> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA
+<dead_caron> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON
+<Multi_key> <c> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON
+<dead_caron> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON
+<Multi_key> <c> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON
+<Multi_key> <slash> <L> : "Å" U0141 # LATIN CAPITAL LETTER L WITH STROKE
+<Multi_key> <KP_Divide> <L> : "Å" U0141 # LATIN CAPITAL LETTER L WITH STROKE
+<Multi_key> <slash> <l> : "Å‚" U0142 # LATIN SMALL LETTER L WITH STROKE
+<Multi_key> <KP_Divide> <l> : "Å‚" U0142 # LATIN SMALL LETTER L WITH STROKE
+<dead_acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<Multi_key> <acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<Multi_key> <apostrophe> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<combining_acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<dead_acute> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<Multi_key> <acute> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<Multi_key> <apostrophe> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<combining_acute> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<dead_cedilla> <N> : "Å…" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA
+<Multi_key> <comma> <N> : "Å…" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA
+<dead_cedilla> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA
+<Multi_key> <comma> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA
+<dead_caron> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON
+<Multi_key> <c> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON
+<dead_caron> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON
+<Multi_key> <c> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON
+<dead_macron> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<Multi_key> <macron> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<Multi_key> <underscore> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<dead_macron> <o> : "Å" U014D # LATIN SMALL LETTER O WITH MACRON
+<Multi_key> <macron> <o> : "Å" U014D # LATIN SMALL LETTER O WITH MACRON
+<Multi_key> <underscore> <o> : "Å" U014D # LATIN SMALL LETTER O WITH MACRON
+<dead_breve> <O> : "ÅŽ" U014E # LATIN CAPITAL LETTER O WITH BREVE
+<Multi_key> <U> <O> : "ÅŽ" U014E # LATIN CAPITAL LETTER O WITH BREVE
+<Multi_key> <b> <O> : "ÅŽ" U014E # LATIN CAPITAL LETTER O WITH BREVE
+<dead_breve> <o> : "Å" U014F # LATIN SMALL LETTER O WITH BREVE
+<Multi_key> <U> <o> : "Å" U014F # LATIN SMALL LETTER O WITH BREVE
+<Multi_key> <b> <o> : "Å" U014F # LATIN SMALL LETTER O WITH BREVE
+<dead_doubleacute> <O> : "Å" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<Multi_key> <equal> <O> : "Å" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<dead_doubleacute> <o> : "Å‘" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<Multi_key> <equal> <o> : "Å‘" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<dead_acute> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<Multi_key> <acute> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<Multi_key> <apostrophe> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<combining_acute> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<dead_acute> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<Multi_key> <acute> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<Multi_key> <apostrophe> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<combining_acute> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<dead_cedilla> <R> : "Å–" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA
+<Multi_key> <comma> <R> : "Å–" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA
+<dead_cedilla> <r> : "Å—" U0157 # LATIN SMALL LETTER R WITH CEDILLA
+<Multi_key> <comma> <r> : "Å—" U0157 # LATIN SMALL LETTER R WITH CEDILLA
+<dead_caron> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON
+<Multi_key> <c> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON
+<dead_caron> <r> : "Å™" U0159 # LATIN SMALL LETTER R WITH CARON
+<Multi_key> <c> <r> : "Å™" U0159 # LATIN SMALL LETTER R WITH CARON
+<dead_acute> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<Multi_key> <acute> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<Multi_key> <apostrophe> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<combining_acute> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<dead_acute> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<Multi_key> <acute> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<Multi_key> <apostrophe> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<combining_acute> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<dead_circumflex> <S> : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <S> : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<dead_circumflex> <s> : "Å" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <s> : "Å" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
+<dead_cedilla> <S> : "Åž" U015E # LATIN CAPITAL LETTER S WITH CEDILLA
+<Multi_key> <comma> <S> : "Åž" U015E # LATIN CAPITAL LETTER S WITH CEDILLA
+<dead_cedilla> <s> : "ÅŸ" U015F # LATIN SMALL LETTER S WITH CEDILLA
+<Multi_key> <comma> <s> : "ÅŸ" U015F # LATIN SMALL LETTER S WITH CEDILLA
+<dead_caron> <S> : "Å " U0160 # LATIN CAPITAL LETTER S WITH CARON
+<Multi_key> <c> <S> : "Å " U0160 # LATIN CAPITAL LETTER S WITH CARON
+<dead_caron> <s> : "Å¡" U0161 # LATIN SMALL LETTER S WITH CARON
+<Multi_key> <c> <s> : "Å¡" U0161 # LATIN SMALL LETTER S WITH CARON
+<dead_cedilla> <T> : "Å¢" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA
+<Multi_key> <comma> <T> : "Å¢" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA
+<dead_cedilla> <t> : "Å£" U0163 # LATIN SMALL LETTER T WITH CEDILLA
+<Multi_key> <comma> <t> : "Å£" U0163 # LATIN SMALL LETTER T WITH CEDILLA
+<dead_caron> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON
+<Multi_key> <c> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON
+<dead_caron> <t> : "Å¥" U0165 # LATIN SMALL LETTER T WITH CARON
+<Multi_key> <c> <t> : "Å¥" U0165 # LATIN SMALL LETTER T WITH CARON
+<Multi_key> <slash> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE
+<Multi_key> <KP_Divide> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE
+<Multi_key> <slash> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE
+<Multi_key> <KP_Divide> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE
+<dead_tilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE
+<Multi_key> <asciitilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE
+<combining_tilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE
+<dead_tilde> <u> : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE
+<Multi_key> <asciitilde> <u> : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE
+<combining_tilde> <u> : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE
+<dead_macron> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<Multi_key> <macron> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<Multi_key> <underscore> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<dead_macron> <u> : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON
+<Multi_key> <macron> <u> : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON
+<Multi_key> <underscore> <u> : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON
+<dead_breve> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE
+<Multi_key> <U> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE
+<Multi_key> <b> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE
+<dead_breve> <u> : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE
+<Multi_key> <U> <u> : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE
+<Multi_key> <b> <u> : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE
+<dead_abovering> <U> : "Å®" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE
+<Multi_key> <o> <U> : "Å®" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE
+<dead_abovering> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE
+<Multi_key> <o> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE
+<dead_doubleacute> <U> : "Å°" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <U> : "Å°" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<dead_doubleacute> <u> : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <u> : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<dead_ogonek> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK
+<Multi_key> <semicolon> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK
+<dead_ogonek> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK
+<Multi_key> <semicolon> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK
+<dead_circumflex> <W> : "Å´" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <W> : "Å´" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<dead_circumflex> <w> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <w> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
+<dead_circumflex> <Y> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <Y> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<dead_circumflex> <y> : "Å·" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <y> : "Å·" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<dead_diaeresis> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+<Multi_key> <quotedbl> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+<dead_acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<Multi_key> <acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<Multi_key> <apostrophe> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<combining_acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<dead_acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<Multi_key> <acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<Multi_key> <apostrophe> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<combining_acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<dead_abovedot> <Z> : "Å»" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<Multi_key> <period> <Z> : "Å»" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<dead_abovedot> <z> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE
+<Multi_key> <period> <z> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE
+<dead_caron> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON
+<Multi_key> <c> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON
+<dead_caron> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON
+<Multi_key> <c> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON
+<Multi_key> <slash> <b> : "Æ€" U0180 # LATIN SMALL LETTER B WITH STROKE
+<Multi_key> <KP_Divide> <b> : "Æ€" U0180 # LATIN SMALL LETTER B WITH STROKE
+<Multi_key> <slash> <I> : "Æ—" U0197 # LATIN CAPITAL LETTER I WITH STROKE
+<Multi_key> <KP_Divide> <I> : "Æ—" U0197 # LATIN CAPITAL LETTER I WITH STROKE
+<dead_horn> <O> : "Æ " U01A0 # LATIN CAPITAL LETTER O WITH HORN
+<Multi_key> <plus> <O> : "Æ " U01A0 # LATIN CAPITAL LETTER O WITH HORN
+<dead_horn> <o> : "Æ¡" U01A1 # LATIN SMALL LETTER O WITH HORN
+<Multi_key> <plus> <o> : "Æ¡" U01A1 # LATIN SMALL LETTER O WITH HORN
+<dead_horn> <U> : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN
+<Multi_key> <plus> <U> : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN
+<dead_horn> <u> : "Æ°" U01B0 # LATIN SMALL LETTER U WITH HORN
+<Multi_key> <plus> <u> : "Æ°" U01B0 # LATIN SMALL LETTER U WITH HORN
+<Multi_key> <slash> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE
+<Multi_key> <KP_Divide> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE
+<Multi_key> <slash> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE
+<Multi_key> <KP_Divide> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE
+<dead_caron> <A> : "Ç" U01CD # LATIN CAPITAL LETTER A WITH CARON
+<Multi_key> <c> <A> : "Ç" U01CD # LATIN CAPITAL LETTER A WITH CARON
+<dead_caron> <a> : "ÇŽ" U01CE # LATIN SMALL LETTER A WITH CARON
+<Multi_key> <c> <a> : "ÇŽ" U01CE # LATIN SMALL LETTER A WITH CARON
+<dead_caron> <I> : "Ç" U01CF # LATIN CAPITAL LETTER I WITH CARON
+<Multi_key> <c> <I> : "Ç" U01CF # LATIN CAPITAL LETTER I WITH CARON
+<dead_caron> <i> : "Ç" U01D0 # LATIN SMALL LETTER I WITH CARON
+<Multi_key> <c> <i> : "Ç" U01D0 # LATIN SMALL LETTER I WITH CARON
+<dead_caron> <O> : "Ç‘" U01D1 # LATIN CAPITAL LETTER O WITH CARON
+<Multi_key> <c> <O> : "Ç‘" U01D1 # LATIN CAPITAL LETTER O WITH CARON
+<dead_caron> <o> : "Ç’" U01D2 # LATIN SMALL LETTER O WITH CARON
+<Multi_key> <c> <o> : "Ç’" U01D2 # LATIN SMALL LETTER O WITH CARON
+<dead_caron> <U> : "Ç“" U01D3 # LATIN CAPITAL LETTER U WITH CARON
+<Multi_key> <c> <U> : "Ç“" U01D3 # LATIN CAPITAL LETTER U WITH CARON
+<dead_caron> <u> : "Ç”" U01D4 # LATIN SMALL LETTER U WITH CARON
+<Multi_key> <c> <u> : "Ç”" U01D4 # LATIN SMALL LETTER U WITH CARON
+<dead_macron> <Udiaeresis> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <Udiaeresis> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <Udiaeresis> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <udiaeresis> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <udiaeresis> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <udiaeresis> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<dead_acute> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<dead_caron> <Udiaeresis> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <Udiaeresis> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <dead_diaeresis> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <Multi_key> <quotedbl> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <dead_diaeresis> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <quotedbl> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <udiaeresis> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <udiaeresis> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <dead_diaeresis> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <Multi_key> <quotedbl> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <dead_diaeresis> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <quotedbl> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<dead_grave> <Udiaeresis> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <Udiaeresis> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <dead_diaeresis> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <Multi_key> <quotedbl> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <dead_diaeresis> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <quotedbl> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <Udiaeresis> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <dead_diaeresis> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <Multi_key> <quotedbl> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <Multi_key> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <Multi_key> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<dead_macron> <Adiaeresis> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <Adiaeresis> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <Adiaeresis> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <adiaeresis> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <adiaeresis> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <adiaeresis> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <U0226> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U0226> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U0226> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <U0227> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U0227> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U0227> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <AE> : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON
+<Multi_key> <macron> <AE> : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON
+<Multi_key> <underscore> <AE> : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON
+<dead_macron> <ae> : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON
+<Multi_key> <macron> <ae> : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON
+<Multi_key> <underscore> <ae> : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON
+<Multi_key> <slash> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE
+<Multi_key> <KP_Divide> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE
+<Multi_key> <slash> <g> : "Ç¥" U01E5 # LATIN SMALL LETTER G WITH STROKE
+<Multi_key> <KP_Divide> <g> : "Ç¥" U01E5 # LATIN SMALL LETTER G WITH STROKE
+<dead_caron> <G> : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON
+<Multi_key> <c> <G> : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON
+<dead_caron> <g> : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON
+<Multi_key> <c> <g> : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON
+<dead_caron> <K> : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON
+<Multi_key> <c> <K> : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON
+<dead_caron> <k> : "Ç©" U01E9 # LATIN SMALL LETTER K WITH CARON
+<Multi_key> <c> <k> : "Ç©" U01E9 # LATIN SMALL LETTER K WITH CARON
+<dead_ogonek> <O> : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK
+<Multi_key> <semicolon> <O> : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK
+<dead_ogonek> <o> : "Ç«" U01EB # LATIN SMALL LETTER O WITH OGONEK
+<Multi_key> <semicolon> <o> : "Ç«" U01EB # LATIN SMALL LETTER O WITH OGONEK
+<dead_macron> <U01ea> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <U01ea> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <U01ea> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <Multi_key> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <U01eb> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <U01eb> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <U01eb> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <dead_ogonek> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <Multi_key> <semicolon> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <dead_ogonek> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <semicolon> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <dead_ogonek> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <semicolon> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<dead_caron> <U01b7> : "Ç®" U01EE # LATIN CAPITAL LETTER EZH WITH CARON
+<Multi_key> <c> <U01b7> : "Ç®" U01EE # LATIN CAPITAL LETTER EZH WITH CARON
+<dead_caron> <U0292> : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON
+<Multi_key> <c> <U0292> : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON
+<dead_caron> <j> : "Ç°" U01F0 # LATIN SMALL LETTER J WITH CARON
+<Multi_key> <c> <j> : "Ç°" U01F0 # LATIN SMALL LETTER J WITH CARON
+<dead_acute> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<Multi_key> <acute> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<Multi_key> <apostrophe> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<combining_acute> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<dead_acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<Multi_key> <acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<Multi_key> <apostrophe> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<combining_acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<dead_grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE
+<Multi_key> <grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE
+<combining_grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE
+<dead_grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE
+<Multi_key> <grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE
+<combining_grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE
+<dead_acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <Multi_key> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <Multi_key> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <Multi_key> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <Multi_key> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<Multi_key> <acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<Multi_key> <apostrophe> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<combining_acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<dead_acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<Multi_key> <acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<Multi_key> <apostrophe> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<combining_acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<dead_acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<U030f> <A> : "È€" U0200 # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+<U030f> <a> : "È" U0201 # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+<U0311> <A> : "È‚" U0202 # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+<U0311> <a> : "ȃ" U0203 # LATIN SMALL LETTER A WITH INVERTED BREVE
+<U030f> <E> : "È„" U0204 # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+<U030f> <e> : "È…" U0205 # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+<U0311> <E> : "Ȇ" U0206 # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+<U0311> <e> : "ȇ" U0207 # LATIN SMALL LETTER E WITH INVERTED BREVE
+<U030f> <I> : "Ȉ" U0208 # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+<U030f> <i> : "ȉ" U0209 # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+<U0311> <I> : "ÈŠ" U020A # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+<U0311> <i> : "È‹" U020B # LATIN SMALL LETTER I WITH INVERTED BREVE
+<U030f> <O> : "Ȍ" U020C # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+<U030f> <o> : "È" U020D # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+<U0311> <O> : "ÈŽ" U020E # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+<U0311> <o> : "È" U020F # LATIN SMALL LETTER O WITH INVERTED BREVE
+<U030f> <R> : "È" U0210 # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+<U030f> <r> : "È‘" U0211 # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+<U0311> <R> : "È’" U0212 # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+<U0311> <r> : "È“" U0213 # LATIN SMALL LETTER R WITH INVERTED BREVE
+<U030f> <U> : "È”" U0214 # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+<U030f> <u> : "È•" U0215 # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+<U0311> <U> : "È–" U0216 # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+<U0311> <u> : "È—" U0217 # LATIN SMALL LETTER U WITH INVERTED BREVE
+<U0326> <S> : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
+<U0326> <s> : "È™" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW
+<U0326> <T> : "Èš" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
+<U0326> <t> : "È›" U021B # LATIN SMALL LETTER T WITH COMMA BELOW
+<dead_caron> <H> : "Èž" U021E # LATIN CAPITAL LETTER H WITH CARON
+<Multi_key> <c> <H> : "Èž" U021E # LATIN CAPITAL LETTER H WITH CARON
+<dead_caron> <h> : "ÈŸ" U021F # LATIN SMALL LETTER H WITH CARON
+<Multi_key> <c> <h> : "ÈŸ" U021F # LATIN SMALL LETTER H WITH CARON
+<dead_abovedot> <A> : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE
+<Multi_key> <period> <A> : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE
+<dead_abovedot> <a> : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE
+<Multi_key> <period> <a> : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE
+<dead_cedilla> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA
+<Multi_key> <comma> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA
+<dead_cedilla> <e> : "È©" U0229 # LATIN SMALL LETTER E WITH CEDILLA
+<Multi_key> <comma> <e> : "È©" U0229 # LATIN SMALL LETTER E WITH CEDILLA
+<dead_macron> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <odiaeresis> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <odiaeresis> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <odiaeresis> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <Multi_key> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <combining_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <combining_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <combining_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <otilde> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <otilde> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <otilde> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_macron> <dead_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_macron> <Multi_key> <asciitilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <dead_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <asciitilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <dead_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <asciitilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_macron> <combining_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <combining_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <combining_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_abovedot> <O> : "È®" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE
+<Multi_key> <period> <O> : "È®" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE
+<dead_abovedot> <o> : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE
+<Multi_key> <period> <o> : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE
+<dead_macron> <U022e> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U022e> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U022e> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <U022f> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U022f> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U022f> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON
+<Multi_key> <macron> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON
+<Multi_key> <underscore> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON
+<dead_macron> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON
+<Multi_key> <macron> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON
+<Multi_key> <underscore> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON
+<Multi_key> <slash> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE
+<Multi_key> <KP_Divide> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE
+<Multi_key> <slash> <U0294> : "Ê¡" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE
+<Multi_key> <KP_Divide> <U0294> : "Ê¡" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE
+<dead_circumflex> <Multi_key> <underscore> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<Multi_key> <asciicircum> <underscore> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<dead_circumflex> <Multi_key> <underbar> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<Multi_key> <asciicircum> <underbar> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<dead_circumflex> <Multi_key> <underscore> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<Multi_key> <asciicircum> <underscore> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<dead_circumflex> <Multi_key> <underbar> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<Multi_key> <asciicircum> <underbar> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<dead_circumflex> <Multi_key> <underscore> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<Multi_key> <asciicircum> <underscore> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<dead_circumflex> <Multi_key> <underbar> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<Multi_key> <asciicircum> <underbar> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<dead_circumflex> <Multi_key> <underscore> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<Multi_key> <asciicircum> <underscore> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<dead_circumflex> <Multi_key> <underbar> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<Multi_key> <asciicircum> <underbar> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<dead_circumflex> <Multi_key> <underscore> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<Multi_key> <asciicircum> <underscore> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<dead_circumflex> <Multi_key> <underbar> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<Multi_key> <asciicircum> <underbar> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<dead_circumflex> <Multi_key> <underscore> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<Multi_key> <asciicircum> <underscore> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<dead_circumflex> <Multi_key> <underbar> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<Multi_key> <asciicircum> <underbar> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<dead_circumflex> <Multi_key> <underscore> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<Multi_key> <asciicircum> <underscore> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<dead_circumflex> <Multi_key> <underbar> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<Multi_key> <asciicircum> <underbar> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<dead_circumflex> <Multi_key> <underscore> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<Multi_key> <asciicircum> <underscore> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<dead_circumflex> <Multi_key> <underbar> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<Multi_key> <asciicircum> <underbar> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<dead_circumflex> <Multi_key> <underscore> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<Multi_key> <asciicircum> <underscore> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<dead_circumflex> <Multi_key> <underbar> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<Multi_key> <asciicircum> <underbar> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<dead_circumflex> <Multi_key> <underscore> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<Multi_key> <asciicircum> <underscore> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<dead_circumflex> <Multi_key> <underbar> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<Multi_key> <asciicircum> <underbar> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<dead_circumflex> <Multi_key> <underscore> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<Multi_key> <asciicircum> <underscore> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<dead_circumflex> <Multi_key> <underbar> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<Multi_key> <asciicircum> <underbar> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<dead_circumflex> <Multi_key> <underscore> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<Multi_key> <asciicircum> <underscore> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<dead_circumflex> <Multi_key> <underbar> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<Multi_key> <asciicircum> <underbar> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<dead_circumflex> <Multi_key> <underscore> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<Multi_key> <asciicircum> <underscore> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<dead_circumflex> <Multi_key> <underbar> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<Multi_key> <asciicircum> <underbar> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<dead_circumflex> <Multi_key> <underscore> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<Multi_key> <asciicircum> <underscore> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<dead_circumflex> <Multi_key> <underbar> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<Multi_key> <asciicircum> <underbar> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<dead_diaeresis> <acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<dead_diaeresis> <apostrophe> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <dead_acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <apostrophe> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <combining_acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <dead_acute> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <acute> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <apostrophe> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <combining_acute> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<dead_acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<Multi_key> <acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<combining_acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<dead_acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<Multi_key> <acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<combining_acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<dead_acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<Multi_key> <acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<Multi_key> <apostrophe> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<combining_acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<dead_acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<Multi_key> <acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<combining_acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<dead_acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<Multi_key> <acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<Multi_key> <apostrophe> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<combining_acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<dead_acute> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<Multi_key> <acute> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<combining_acute> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<dead_acute> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<Multi_key> <acute> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<combining_acute> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<dead_acute> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<dead_acute> <Multi_key> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<combining_acute> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<combining_acute> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<combining_acute> <Multi_key> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<dead_diaeresis> <Greek_UPSILON> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<dead_acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<Multi_key> <acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<Multi_key> <apostrophe> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<combining_acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<dead_acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<Multi_key> <acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<combining_acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<dead_acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<Multi_key> <acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<Multi_key> <apostrophe> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<combining_acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<dead_acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<Multi_key> <acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<Multi_key> <apostrophe> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<combining_acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<dead_acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<dead_acute> <Multi_key> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<combining_acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<combining_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<combining_acute> <Multi_key> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<dead_diaeresis> <Greek_iota> : "ÏŠ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<dead_diaeresis> <Greek_upsilon> : "Ï‹" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<dead_acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<Multi_key> <acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<Multi_key> <apostrophe> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<combining_acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<dead_acute> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<Multi_key> <acute> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<combining_acute> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<dead_acute> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<Multi_key> <acute> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<combining_acute> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<Multi_key> <acute> <U03d2> : "Ï“" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+<Multi_key> <apostrophe> <U03d2> : "Ï“" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+<Multi_key> <quotedbl> <U03d2> : "Ï”" U03D4 # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+<dead_grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+<Multi_key> <grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+<combining_grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+<dead_diaeresis> <Cyrillic_IE> : "Ð" U0401 # CYRILLIC CAPITAL LETTER IO
+<Multi_key> <quotedbl> <Cyrillic_IE> : "Ð" U0401 # CYRILLIC CAPITAL LETTER IO
+<dead_acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<Multi_key> <acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<Multi_key> <apostrophe> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<combining_acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<dead_diaeresis> <Ukrainian_I> : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI
+<Multi_key> <quotedbl> <Ukrainian_I> : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI
+<dead_acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<Multi_key> <acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<Multi_key> <apostrophe> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<combining_acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<dead_grave> <Cyrillic_I> : "Ð" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE
+<Multi_key> <grave> <Cyrillic_I> : "Ð" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE
+<combining_grave> <Cyrillic_I> : "Ð" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE
+<dead_breve> <Cyrillic_U> : "ÐŽ" U040E # CYRILLIC CAPITAL LETTER SHORT U
+<Multi_key> <U> <Cyrillic_U> : "ÐŽ" U040E # CYRILLIC CAPITAL LETTER SHORT U
+<Multi_key> <b> <Cyrillic_U> : "ÐŽ" U040E # CYRILLIC CAPITAL LETTER SHORT U
+<dead_breve> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I
+<Multi_key> <U> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I
+<Multi_key> <b> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I
+<dead_breve> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I
+<Multi_key> <U> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I
+<Multi_key> <b> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I
+<dead_grave> <Cyrillic_ie> : "Ñ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE
+<Multi_key> <grave> <Cyrillic_ie> : "Ñ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE
+<combining_grave> <Cyrillic_ie> : "Ñ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE
+<dead_diaeresis> <Cyrillic_ie> : "Ñ‘" U0451 # CYRILLIC SMALL LETTER IO
+<Multi_key> <quotedbl> <Cyrillic_ie> : "Ñ‘" U0451 # CYRILLIC SMALL LETTER IO
+<dead_acute> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<Multi_key> <acute> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<Multi_key> <apostrophe> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<combining_acute> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<dead_diaeresis> <Ukrainian_i> : "Ñ—" U0457 # CYRILLIC SMALL LETTER YI
+<Multi_key> <quotedbl> <Ukrainian_i> : "Ñ—" U0457 # CYRILLIC SMALL LETTER YI
+<dead_acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<Multi_key> <acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<Multi_key> <apostrophe> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<combining_acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<dead_grave> <Cyrillic_i> : "Ñ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE
+<Multi_key> <grave> <Cyrillic_i> : "Ñ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE
+<combining_grave> <Cyrillic_i> : "Ñ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE
+<dead_breve> <Cyrillic_u> : "Ñž" U045E # CYRILLIC SMALL LETTER SHORT U
+<Multi_key> <U> <Cyrillic_u> : "Ñž" U045E # CYRILLIC SMALL LETTER SHORT U
+<Multi_key> <b> <Cyrillic_u> : "Ñž" U045E # CYRILLIC SMALL LETTER SHORT U
+<U030f> <U0474> : "Ѷ" U0476 # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+<U030f> <U0475> : "Ñ·" U0477 # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+<Multi_key> <slash> <Cyrillic_GHE> : "Ò’" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_GHE> : "Ò’" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+<Multi_key> <slash> <Cyrillic_ghe> : "Ò“" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_ghe> : "Ò“" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE
+<Multi_key> <slash> <Cyrillic_KA> : "Òž" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_KA> : "Òž" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE
+<Multi_key> <slash> <Cyrillic_ka> : "ÒŸ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_ka> : "ÒŸ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE
+<Multi_key> <slash> <U04ae> : "Ò°" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+<Multi_key> <KP_Divide> <U04ae> : "Ò°" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+<Multi_key> <slash> <U04af> : "Ò±" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+<Multi_key> <KP_Divide> <U04af> : "Ò±" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+<dead_breve> <Cyrillic_ZHE> : "Ó" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+<Multi_key> <U> <Cyrillic_ZHE> : "Ó" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+<Multi_key> <b> <Cyrillic_ZHE> : "Ó" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+<dead_breve> <Cyrillic_zhe> : "Ó‚" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE
+<Multi_key> <U> <Cyrillic_zhe> : "Ó‚" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE
+<Multi_key> <b> <Cyrillic_zhe> : "Ó‚" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE
+<dead_breve> <Cyrillic_A> : "Ó" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE
+<Multi_key> <U> <Cyrillic_A> : "Ó" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE
+<Multi_key> <b> <Cyrillic_A> : "Ó" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE
+<dead_breve> <Cyrillic_a> : "Ó‘" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE
+<Multi_key> <U> <Cyrillic_a> : "Ó‘" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE
+<Multi_key> <b> <Cyrillic_a> : "Ó‘" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE
+<dead_diaeresis> <Cyrillic_A> : "Ó’" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_A> : "Ó’" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_a> : "Ó“" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_a> : "Ó“" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS
+<dead_breve> <Cyrillic_IE> : "Ó–" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE
+<Multi_key> <U> <Cyrillic_IE> : "Ó–" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE
+<Multi_key> <b> <Cyrillic_IE> : "Ó–" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE
+<dead_breve> <Cyrillic_ie> : "Ó—" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE
+<Multi_key> <U> <Cyrillic_ie> : "Ó—" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE
+<Multi_key> <b> <Cyrillic_ie> : "Ó—" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE
+<dead_diaeresis> <U04d8> : "Óš" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+<Multi_key> <quotedbl> <U04d8> : "Óš" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+<dead_diaeresis> <U04d9> : "Ó›" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+<Multi_key> <quotedbl> <U04d9> : "Ó›" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_ZHE> : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_ZHE> : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_zhe> : "Ó" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_zhe> : "Ó" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_ZE> : "Óž" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_ZE> : "Óž" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_ze> : "ÓŸ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_ze> : "ÓŸ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+<dead_macron> <Cyrillic_I> : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON
+<Multi_key> <macron> <Cyrillic_I> : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON
+<Multi_key> <underscore> <Cyrillic_I> : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON
+<dead_macron> <Cyrillic_i> : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON
+<Multi_key> <macron> <Cyrillic_i> : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON
+<Multi_key> <underscore> <Cyrillic_i> : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON
+<dead_diaeresis> <Cyrillic_I> : "Ó¤" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_I> : "Ó¤" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_i> : "Ó¥" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_i> : "Ó¥" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_O> : "Ó¦" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_O> : "Ó¦" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_o> : "Ó§" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_o> : "Ó§" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS
+<dead_diaeresis> <U04e8> : "Óª" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+<Multi_key> <quotedbl> <U04e8> : "Óª" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+<dead_diaeresis> <U04e9> : "Ó«" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+<Multi_key> <quotedbl> <U04e9> : "Ó«" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_E> : "Ó¬" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_E> : "Ó¬" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_e> : "Ó­" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_e> : "Ó­" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS
+<dead_macron> <Cyrillic_U> : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON
+<Multi_key> <macron> <Cyrillic_U> : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON
+<Multi_key> <underscore> <Cyrillic_U> : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON
+<dead_macron> <Cyrillic_u> : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON
+<Multi_key> <macron> <Cyrillic_u> : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON
+<Multi_key> <underscore> <Cyrillic_u> : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON
+<dead_diaeresis> <Cyrillic_U> : "Ó°" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_U> : "Ó°" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_u> : "Ó±" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_u> : "Ó±" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS
+<dead_doubleacute> <Cyrillic_U> : "Ó²" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <Cyrillic_U> : "Ó²" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+<dead_doubleacute> <Cyrillic_u> : "Ó³" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <Cyrillic_u> : "Ó³" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+<dead_diaeresis> <Cyrillic_CHE> : "Ó´" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_CHE> : "Ó´" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_che> : "Óµ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_che> : "Óµ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_YERU> : "Ó¸" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_YERU> : "Ó¸" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_yeru> : "Ó¹" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_yeru> : "Ó¹" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+<Multi_key> <U0653> <Arabic_alef> : "Ø¢" U0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
+<Multi_key> <U0654> <Arabic_alef> : "Ø£" U0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
+<Multi_key> <U0654> <Arabic_waw> : "ؤ" U0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
+<Multi_key> <U0655> <Arabic_alef> : "Ø¥" U0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
+<Multi_key> <U0654> <Arabic_yeh> : "ئ" U0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
+<Multi_key> <U0654> <U06d5> : "Û€" U06C0 # ARABIC LETTER HEH WITH YEH ABOVE
+<Multi_key> <U0654> <U06c1> : "Û‚" U06C2 # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+<Multi_key> <U0654> <U06d2> : "Û“" U06D3 # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+<Multi_key> <U093c> <U0928> : "ऩ" U0929 # DEVANAGARI LETTER NNNA
+<Multi_key> <U093c> <U0930> : "ऱ" U0931 # DEVANAGARI LETTER RRA
+<Multi_key> <U093c> <U0933> : "ऴ" U0934 # DEVANAGARI LETTER LLLA
+<Multi_key> <U093c> <U0915> : "क़" U0958 # DEVANAGARI LETTER QA
+<Multi_key> <U093c> <U0916> : "ख़" U0959 # DEVANAGARI LETTER KHHA
+<Multi_key> <U093c> <U0917> : "ग़" U095A # DEVANAGARI LETTER GHHA
+<Multi_key> <U093c> <U091c> : "ज़" U095B # DEVANAGARI LETTER ZA
+<Multi_key> <U093c> <U0921> : "ड़" U095C # DEVANAGARI LETTER DDDHA
+<Multi_key> <U093c> <U0922> : "à¥" U095D # DEVANAGARI LETTER RHA
+<Multi_key> <U093c> <U092b> : "फ़" U095E # DEVANAGARI LETTER FA
+<Multi_key> <U093c> <U092f> : "य़" U095F # DEVANAGARI LETTER YYA
+<Multi_key> <U09c7> <U09be> : "ো" U09CB # BENGALI VOWEL SIGN O
+<Multi_key> <U09c7> <U09d7> : "ৌ" U09CC # BENGALI VOWEL SIGN AU
+<Multi_key> <U09bc> <U09a1> : "ড়" U09DC # BENGALI LETTER RRA
+<Multi_key> <U09bc> <U09a2> : "à§" U09DD # BENGALI LETTER RHA
+<Multi_key> <U09bc> <U09af> : "য়" U09DF # BENGALI LETTER YYA
+<Multi_key> <U0a3c> <U0a32> : "ਲ਼" U0A33 # GURMUKHI LETTER LLA
+<Multi_key> <U0a3c> <U0a38> : "ਸ਼" U0A36 # GURMUKHI LETTER SHA
+<Multi_key> <U0a3c> <U0a16> : "à©™" U0A59 # GURMUKHI LETTER KHHA
+<Multi_key> <U0a3c> <U0a17> : "à©š" U0A5A # GURMUKHI LETTER GHHA
+<Multi_key> <U0a3c> <U0a1c> : "à©›" U0A5B # GURMUKHI LETTER ZA
+<Multi_key> <U0a3c> <U0a2b> : "à©ž" U0A5E # GURMUKHI LETTER FA
+<Multi_key> <U0b47> <U0b56> : "à­ˆ" U0B48 # ORIYA VOWEL SIGN AI
+<Multi_key> <U0b47> <U0b3e> : "à­‹" U0B4B # ORIYA VOWEL SIGN O
+<Multi_key> <U0b47> <U0b57> : "ୌ" U0B4C # ORIYA VOWEL SIGN AU
+<Multi_key> <U0b3c> <U0b21> : "ଡ଼" U0B5C # ORIYA LETTER RRA
+<Multi_key> <U0b3c> <U0b22> : "à­" U0B5D # ORIYA LETTER RHA
+<Multi_key> <U0bd7> <U0b92> : "à®”" U0B94 # TAMIL LETTER AU
+<Multi_key> <U0bc6> <U0bbe> : "ொ" U0BCA # TAMIL VOWEL SIGN O
+<Multi_key> <U0bc7> <U0bbe> : "ோ" U0BCB # TAMIL VOWEL SIGN OO
+<Multi_key> <U0bc6> <U0bd7> : "ௌ" U0BCC # TAMIL VOWEL SIGN AU
+<Multi_key> <U0c46> <U0c56> : "ై" U0C48 # TELUGU VOWEL SIGN AI
+<Multi_key> <U0cbf> <U0cd5> : "à³€" U0CC0 # KANNADA VOWEL SIGN II
+<Multi_key> <U0cc6> <U0cd5> : "ೇ" U0CC7 # KANNADA VOWEL SIGN EE
+<Multi_key> <U0cc6> <U0cd6> : "ೈ" U0CC8 # KANNADA VOWEL SIGN AI
+<Multi_key> <U0cc6> <U0cc2> : "ೊ" U0CCA # KANNADA VOWEL SIGN O
+<Multi_key> <U0cca> <U0cd5> : "ೋ" U0CCB # KANNADA VOWEL SIGN OO
+<Multi_key> <U0cc6> <U0cc2> <U0cd5> : "ೋ" U0CCB # KANNADA VOWEL SIGN OO
+<Multi_key> <U0d46> <U0d3e> : "ൊ" U0D4A # MALAYALAM VOWEL SIGN O
+<Multi_key> <U0d47> <U0d3e> : "ോ" U0D4B # MALAYALAM VOWEL SIGN OO
+<Multi_key> <U0d46> <U0d57> : "ൌ" U0D4C # MALAYALAM VOWEL SIGN AU
+<Multi_key> <U0dd9> <U0dca> : "à·š" U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA
+<Multi_key> <U0dd9> <U0dcf> : "ො" U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+<Multi_key> <U0ddc> <U0dca> : "à·" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+<Multi_key> <U0dd9> <U0dcf> <U0dca> : "à·" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+<Multi_key> <U0dd9> <U0ddf> : "à·ž" U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+<Multi_key> <U0fb7> <U0f42> : "གྷ" U0F43 # TIBETAN LETTER GHA
+<Multi_key> <U0fb7> <U0f4c> : "à½" U0F4D # TIBETAN LETTER DDHA
+<Multi_key> <U0fb7> <U0f51> : "དྷ" U0F52 # TIBETAN LETTER DHA
+<Multi_key> <U0fb7> <U0f56> : "བྷ" U0F57 # TIBETAN LETTER BHA
+<Multi_key> <U0fb7> <U0f5b> : "ཛྷ" U0F5C # TIBETAN LETTER DZHA
+<Multi_key> <U0fb5> <U0f40> : "ཀྵ" U0F69 # TIBETAN LETTER KSSA
+<Multi_key> <U0f71> <U0f72> : "ཱི" U0F73 # TIBETAN VOWEL SIGN II
+<Multi_key> <U0f71> <U0f74> : "ཱུ" U0F75 # TIBETAN VOWEL SIGN UU
+<Multi_key> <U0fb2> <U0f80> : "ྲྀ" U0F76 # TIBETAN VOWEL SIGN VOCALIC R
+<Multi_key> <U0fb3> <U0f80> : "ླྀ" U0F78 # TIBETAN VOWEL SIGN VOCALIC L
+<Multi_key> <U0f71> <U0f80> : "à¾" U0F81 # TIBETAN VOWEL SIGN REVERSED II
+<Multi_key> <U0f92> <U0fb7> : "ྒྷ" U0F93 # TIBETAN SUBJOINED LETTER GHA
+<Multi_key> <U0f9c> <U0fb7> : "à¾" U0F9D # TIBETAN SUBJOINED LETTER DDHA
+<Multi_key> <U0fa1> <U0fb7> : "ྡྷ" U0FA2 # TIBETAN SUBJOINED LETTER DHA
+<Multi_key> <U0fa6> <U0fb7> : "ྦྷ" U0FA7 # TIBETAN SUBJOINED LETTER BHA
+<Multi_key> <U0fab> <U0fb7> : "ྫྷ" U0FAC # TIBETAN SUBJOINED LETTER DZHA
+<Multi_key> <U0f90> <U0fb5> : "ྐྵ" U0FB9 # TIBETAN SUBJOINED LETTER KSSA
+<Multi_key> <U102e> <U1025> : "ဦ" U1026 # MYANMAR LETTER UU
+<U0325> <A> : "Ḁ" U1E00 # LATIN CAPITAL LETTER A WITH RING BELOW
+<U0325> <a> : "á¸" U1E01 # LATIN SMALL LETTER A WITH RING BELOW
+<dead_abovedot> <B> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
+<Multi_key> <period> <B> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
+<dead_abovedot> <b> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
+<Multi_key> <period> <b> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
+<dead_belowdot> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW
+<Multi_key> <exclam> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW
+<combining_belowdot> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW
+<dead_belowdot> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW
+<Multi_key> <exclam> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW
+<combining_belowdot> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW
+<U0331> <B> : "Ḇ" U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW
+<U0331> <b> : "ḇ" U1E07 # LATIN SMALL LETTER B WITH LINE BELOW
+<dead_acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <Multi_key> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <Multi_key> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <Multi_key> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <Multi_key> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<dead_abovedot> <D> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
+<Multi_key> <period> <D> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
+<dead_abovedot> <d> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
+<Multi_key> <period> <d> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
+<dead_belowdot> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW
+<Multi_key> <exclam> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW
+<combining_belowdot> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW
+<dead_belowdot> <d> : "á¸" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW
+<Multi_key> <exclam> <d> : "á¸" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW
+<combining_belowdot> <d> : "á¸" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW
+<U0331> <D> : "Ḏ" U1E0E # LATIN CAPITAL LETTER D WITH LINE BELOW
+<U0331> <d> : "á¸" U1E0F # LATIN SMALL LETTER D WITH LINE BELOW
+<dead_cedilla> <D> : "á¸" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA
+<Multi_key> <comma> <D> : "á¸" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA
+<dead_cedilla> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA
+<Multi_key> <comma> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA
+<U032d> <D> : "Ḓ" U1E12 # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+<U032d> <d> : "ḓ" U1E13 # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+<dead_grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<U032d> <E> : "Ḙ" U1E18 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+<U032d> <e> : "ḙ" U1E19 # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+<U0330> <E> : "Ḛ" U1E1A # LATIN CAPITAL LETTER E WITH TILDE BELOW
+<U0330> <e> : "ḛ" U1E1B # LATIN SMALL LETTER E WITH TILDE BELOW
+<dead_breve> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <Multi_key> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <U0229> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <U0229> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <U0229> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <dead_cedilla> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <Multi_key> <comma> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <dead_cedilla> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <comma> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <dead_cedilla> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <comma> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<dead_abovedot> <F> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
+<Multi_key> <period> <F> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
+<dead_abovedot> <f> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
+<Multi_key> <period> <f> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
+<dead_macron> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON
+<Multi_key> <macron> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON
+<Multi_key> <underscore> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON
+<dead_macron> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON
+<Multi_key> <macron> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON
+<Multi_key> <underscore> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON
+<dead_abovedot> <H> : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE
+<Multi_key> <period> <H> : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE
+<dead_abovedot> <h> : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE
+<Multi_key> <period> <h> : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE
+<dead_belowdot> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW
+<Multi_key> <exclam> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW
+<combining_belowdot> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW
+<dead_belowdot> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW
+<Multi_key> <exclam> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW
+<combining_belowdot> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW
+<dead_diaeresis> <H> : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS
+<Multi_key> <quotedbl> <H> : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS
+<dead_diaeresis> <h> : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS
+<Multi_key> <quotedbl> <h> : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS
+<dead_cedilla> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA
+<Multi_key> <comma> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA
+<dead_cedilla> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA
+<Multi_key> <comma> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA
+<U032e> <H> : "Ḫ" U1E2A # LATIN CAPITAL LETTER H WITH BREVE BELOW
+<U032e> <h> : "ḫ" U1E2B # LATIN SMALL LETTER H WITH BREVE BELOW
+<U0330> <I> : "Ḭ" U1E2C # LATIN CAPITAL LETTER I WITH TILDE BELOW
+<U0330> <i> : "ḭ" U1E2D # LATIN SMALL LETTER I WITH TILDE BELOW
+<dead_acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<Multi_key> <acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<Multi_key> <apostrophe> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<combining_acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<dead_acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<Multi_key> <acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<Multi_key> <apostrophe> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<combining_acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<dead_belowdot> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW
+<Multi_key> <exclam> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW
+<combining_belowdot> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW
+<dead_belowdot> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW
+<Multi_key> <exclam> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW
+<combining_belowdot> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW
+<U0331> <K> : "Ḵ" U1E34 # LATIN CAPITAL LETTER K WITH LINE BELOW
+<U0331> <k> : "ḵ" U1E35 # LATIN SMALL LETTER K WITH LINE BELOW
+<dead_belowdot> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW
+<Multi_key> <exclam> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW
+<combining_belowdot> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW
+<dead_belowdot> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW
+<Multi_key> <exclam> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW
+<combining_belowdot> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW
+<dead_macron> <U1e36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <U1e37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<U0331> <L> : "Ḻ" U1E3A # LATIN CAPITAL LETTER L WITH LINE BELOW
+<U0331> <l> : "ḻ" U1E3B # LATIN SMALL LETTER L WITH LINE BELOW
+<U032d> <L> : "Ḽ" U1E3C # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+<U032d> <l> : "ḽ" U1E3D # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+<dead_acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<Multi_key> <acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<Multi_key> <apostrophe> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<combining_acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<dead_acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<Multi_key> <acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<Multi_key> <apostrophe> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<combining_acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<dead_abovedot> <M> : "á¹€" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
+<Multi_key> <period> <M> : "á¹€" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
+<dead_abovedot> <m> : "á¹" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
+<Multi_key> <period> <m> : "á¹" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
+<dead_belowdot> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW
+<Multi_key> <exclam> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW
+<combining_belowdot> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW
+<dead_belowdot> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW
+<Multi_key> <exclam> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW
+<combining_belowdot> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW
+<dead_abovedot> <N> : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE
+<Multi_key> <period> <N> : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE
+<dead_abovedot> <n> : "á¹…" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE
+<Multi_key> <period> <n> : "á¹…" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE
+<dead_belowdot> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW
+<Multi_key> <exclam> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW
+<combining_belowdot> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW
+<dead_belowdot> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW
+<Multi_key> <exclam> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW
+<combining_belowdot> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW
+<U0331> <N> : "Ṉ" U1E48 # LATIN CAPITAL LETTER N WITH LINE BELOW
+<U0331> <n> : "ṉ" U1E49 # LATIN SMALL LETTER N WITH LINE BELOW
+<U032d> <N> : "Ṋ" U1E4A # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+<U032d> <n> : "ṋ" U1E4B # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+<dead_acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_diaeresis> <Otilde> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <Otilde> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <dead_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <Multi_key> <asciitilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <dead_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <asciitilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <combining_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <combining_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <otilde> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <otilde> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <dead_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <Multi_key> <asciitilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <dead_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <asciitilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <combining_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <combining_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_grave> <Omacron> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <Omacron> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Omacron> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_acute> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<Multi_key> <acute> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<Multi_key> <apostrophe> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<combining_acute> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<dead_acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<Multi_key> <acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<Multi_key> <apostrophe> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<combining_acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<dead_abovedot> <P> : "á¹–" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
+<Multi_key> <period> <P> : "á¹–" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
+<dead_abovedot> <p> : "á¹—" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
+<Multi_key> <period> <p> : "á¹—" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
+<dead_abovedot> <R> : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE
+<Multi_key> <period> <R> : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE
+<dead_abovedot> <r> : "á¹™" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE
+<Multi_key> <period> <r> : "á¹™" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE
+<dead_belowdot> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW
+<Multi_key> <exclam> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW
+<combining_belowdot> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW
+<dead_belowdot> <r> : "á¹›" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW
+<Multi_key> <exclam> <r> : "á¹›" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW
+<combining_belowdot> <r> : "á¹›" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW
+<dead_macron> <U1e5a> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e5a> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e5a> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <U1e5b> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e5b> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e5b> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<U0331> <R> : "Ṟ" U1E5E # LATIN CAPITAL LETTER R WITH LINE BELOW
+<U0331> <r> : "ṟ" U1E5F # LATIN SMALL LETTER R WITH LINE BELOW
+<dead_abovedot> <S> : "á¹ " U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
+<Multi_key> <period> <S> : "á¹ " U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
+<dead_abovedot> <s> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
+<Multi_key> <period> <s> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
+<dead_belowdot> <S> : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW
+<Multi_key> <exclam> <S> : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW
+<combining_belowdot> <S> : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW
+<dead_belowdot> <s> : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW
+<Multi_key> <exclam> <s> : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW
+<combining_belowdot> <s> : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW
+<dead_abovedot> <Sacute> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <Sacute> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <dead_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <apostrophe> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <dead_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <apostrophe> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <combining_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <combining_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <sacute> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <sacute> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <dead_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <apostrophe> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <dead_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <apostrophe> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <combining_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <combining_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Scaron> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <Scaron> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <dead_caron> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <Multi_key> <c> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <dead_caron> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <c> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <scaron> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <scaron> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <dead_caron> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <Multi_key> <c> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <dead_caron> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <c> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <U1e62> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <U1e62> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <dead_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <Multi_key> <exclam> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <dead_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <exclam> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <combining_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <combining_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <U1e63> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <U1e63> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <dead_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <Multi_key> <exclam> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <dead_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <exclam> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <combining_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <combining_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <T> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
+<Multi_key> <period> <T> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
+<dead_abovedot> <t> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
+<Multi_key> <period> <t> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
+<dead_belowdot> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW
+<Multi_key> <exclam> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW
+<combining_belowdot> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW
+<dead_belowdot> <t> : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW
+<Multi_key> <exclam> <t> : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW
+<combining_belowdot> <t> : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW
+<U0331> <T> : "á¹®" U1E6E # LATIN CAPITAL LETTER T WITH LINE BELOW
+<U0331> <t> : "ṯ" U1E6F # LATIN SMALL LETTER T WITH LINE BELOW
+<U032d> <T> : "á¹°" U1E70 # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+<U032d> <t> : "á¹±" U1E71 # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+<U0324> <U> : "á¹²" U1E72 # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+<U0324> <u> : "á¹³" U1E73 # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+<U0330> <U> : "á¹´" U1E74 # LATIN CAPITAL LETTER U WITH TILDE BELOW
+<U0330> <u> : "á¹µ" U1E75 # LATIN SMALL LETTER U WITH TILDE BELOW
+<U032d> <U> : "Ṷ" U1E76 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+<U032d> <u> : "á¹·" U1E77 # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+<dead_acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_diaeresis> <Umacron> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <Umacron> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <dead_macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <underscore> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <dead_macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <underscore> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <umacron> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <umacron> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <dead_macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <underscore> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <dead_macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <underscore> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_tilde> <V> : "á¹¼" U1E7C # LATIN CAPITAL LETTER V WITH TILDE
+<Multi_key> <asciitilde> <V> : "á¹¼" U1E7C # LATIN CAPITAL LETTER V WITH TILDE
+<combining_tilde> <V> : "á¹¼" U1E7C # LATIN CAPITAL LETTER V WITH TILDE
+<dead_tilde> <v> : "á¹½" U1E7D # LATIN SMALL LETTER V WITH TILDE
+<Multi_key> <asciitilde> <v> : "á¹½" U1E7D # LATIN SMALL LETTER V WITH TILDE
+<combining_tilde> <v> : "á¹½" U1E7D # LATIN SMALL LETTER V WITH TILDE
+<dead_belowdot> <V> : "á¹¾" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW
+<Multi_key> <exclam> <V> : "á¹¾" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW
+<combining_belowdot> <V> : "á¹¾" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW
+<dead_belowdot> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW
+<Multi_key> <exclam> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW
+<combining_belowdot> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW
+<dead_grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE
+<Multi_key> <grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE
+<combining_grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE
+<dead_grave> <w> : "áº" U1E81 # LATIN SMALL LETTER W WITH GRAVE
+<Multi_key> <grave> <w> : "áº" U1E81 # LATIN SMALL LETTER W WITH GRAVE
+<combining_grave> <w> : "áº" U1E81 # LATIN SMALL LETTER W WITH GRAVE
+<dead_acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<Multi_key> <acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<Multi_key> <apostrophe> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<combining_acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<dead_acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<Multi_key> <acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<Multi_key> <apostrophe> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<combining_acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<dead_diaeresis> <W> : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
+<Multi_key> <quotedbl> <W> : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
+<dead_diaeresis> <w> : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS
+<Multi_key> <quotedbl> <w> : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS
+<dead_abovedot> <W> : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE
+<Multi_key> <period> <W> : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE
+<dead_abovedot> <w> : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE
+<Multi_key> <period> <w> : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE
+<dead_belowdot> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW
+<Multi_key> <exclam> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW
+<combining_belowdot> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW
+<dead_belowdot> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW
+<Multi_key> <exclam> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW
+<combining_belowdot> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW
+<dead_abovedot> <X> : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE
+<Multi_key> <period> <X> : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE
+<dead_abovedot> <x> : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE
+<Multi_key> <period> <x> : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE
+<dead_diaeresis> <X> : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS
+<Multi_key> <quotedbl> <X> : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS
+<dead_diaeresis> <x> : "áº" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS
+<Multi_key> <quotedbl> <x> : "áº" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS
+<dead_abovedot> <Y> : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+<Multi_key> <period> <Y> : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+<dead_abovedot> <y> : "áº" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE
+<Multi_key> <period> <y> : "áº" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE
+<dead_circumflex> <Z> : "áº" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <Z> : "áº" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+<dead_circumflex> <z> : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <z> : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+<dead_belowdot> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW
+<Multi_key> <exclam> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW
+<combining_belowdot> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW
+<dead_belowdot> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW
+<Multi_key> <exclam> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW
+<combining_belowdot> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW
+<U0331> <Z> : "Ẕ" U1E94 # LATIN CAPITAL LETTER Z WITH LINE BELOW
+<U0331> <z> : "ẕ" U1E95 # LATIN SMALL LETTER Z WITH LINE BELOW
+<U0331> <h> : "ẖ" U1E96 # LATIN SMALL LETTER H WITH LINE BELOW
+<dead_diaeresis> <t> : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS
+<Multi_key> <quotedbl> <t> : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS
+<dead_abovering> <w> : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE
+<Multi_key> <o> <w> : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE
+<dead_abovering> <y> : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE
+<Multi_key> <o> <y> : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE
+<dead_abovedot> <U017f> : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+<Multi_key> <period> <U017f> : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+<dead_belowdot> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
+<Multi_key> <exclam> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
+<combining_belowdot> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
+<dead_belowdot> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
+<Multi_key> <exclam> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
+<combining_belowdot> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
+<dead_hook> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+<Multi_key> <question> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+<combining_hook> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+<dead_hook> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
+<Multi_key> <question> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
+<combining_hook> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
+<dead_acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_hook> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_tilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_circumflex> <U1ea0> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ea0> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <U1ea1> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ea1> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_hook> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_tilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_breve> <U1ea0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <U1ea0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <U1ea0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <Multi_key> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <combining_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <combining_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <combining_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <U1ea1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <U1ea1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <U1ea1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <Multi_key> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <combining_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <combining_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <combining_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_belowdot> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
+<Multi_key> <exclam> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
+<combining_belowdot> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
+<dead_belowdot> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
+<Multi_key> <exclam> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
+<combining_belowdot> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
+<dead_hook> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+<Multi_key> <question> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+<combining_hook> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+<dead_hook> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
+<Multi_key> <question> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
+<combining_hook> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
+<dead_tilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE
+<Multi_key> <asciitilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE
+<combining_tilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE
+<dead_tilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE
+<Multi_key> <asciitilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE
+<combining_tilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE
+<dead_acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <ecircumflex> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <ecircumflex> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <ecircumflex> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_hook> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_tilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <ecircumflex> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <ecircumflex> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <ecircumflex> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_circumflex> <U1eb8> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1eb8> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <U1eb9> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1eb9> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_hook> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+<Multi_key> <question> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+<combining_hook> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+<dead_hook> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
+<Multi_key> <question> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
+<combining_hook> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
+<dead_belowdot> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
+<Multi_key> <exclam> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
+<combining_belowdot> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
+<dead_belowdot> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW
+<Multi_key> <exclam> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW
+<combining_belowdot> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW
+<dead_belowdot> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
+<Multi_key> <exclam> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
+<combining_belowdot> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
+<dead_belowdot> <o> : "á»" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW
+<Multi_key> <exclam> <o> : "á»" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW
+<combining_belowdot> <o> : "á»" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW
+<dead_hook> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+<Multi_key> <question> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+<combining_hook> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+<dead_hook> <o> : "á»" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
+<Multi_key> <question> <o> : "á»" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
+<combining_hook> <o> : "á»" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
+<dead_acute> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_grave> <Ocircumflex> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <Ocircumflex> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Ocircumflex> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_hook> <Ocircumflex> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <Ocircumflex> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Ocircumflex> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_tilde> <Ocircumflex> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <Ocircumflex> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Ocircumflex> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <ocircumflex> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <ocircumflex> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <ocircumflex> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_circumflex> <U1ecc> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ecc> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <U1ecd> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ecd> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<combining_acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<combining_acute> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<combining_grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <ohorn> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <ohorn> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<combining_grave> <ohorn> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_hook> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_tilde> <Ohorn> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <Ohorn> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<combining_tilde> <Ohorn> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<combining_tilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_belowdot> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
+<Multi_key> <exclam> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
+<combining_belowdot> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
+<dead_belowdot> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
+<Multi_key> <exclam> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
+<combining_belowdot> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
+<dead_hook> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+<Multi_key> <question> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+<combining_hook> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+<dead_hook> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
+<Multi_key> <question> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
+<combining_hook> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
+<dead_acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<combining_acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<combining_acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<combining_grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<combining_grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_hook> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <uhorn> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <uhorn> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <uhorn> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_tilde> <Uhorn> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <Uhorn> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<combining_tilde> <Uhorn> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<combining_tilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_belowdot> <Uhorn> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <Uhorn> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <Uhorn> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <uhorn> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <uhorn> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <uhorn> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
+<Multi_key> <grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
+<combining_grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
+<dead_grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
+<Multi_key> <grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
+<combining_grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
+<dead_belowdot> <Y> : "á»´" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
+<Multi_key> <exclam> <Y> : "á»´" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
+<combining_belowdot> <Y> : "á»´" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
+<dead_belowdot> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
+<Multi_key> <exclam> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
+<combining_belowdot> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
+<dead_hook> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+<Multi_key> <question> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+<combining_hook> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+<dead_hook> <y> : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
+<Multi_key> <question> <y> : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
+<combining_hook> <y> : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
+<dead_tilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
+<Multi_key> <asciitilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
+<combining_tilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
+<dead_tilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE
+<Multi_key> <asciitilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE
+<combining_tilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE
+<U0313> <Greek_alpha> : "á¼€" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI
+<Multi_key> <parenright> <Greek_alpha> : "á¼€" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI
+<U0314> <Greek_alpha> : "á¼" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA
+<Multi_key> <parenleft> <Greek_alpha> : "á¼" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA
+<dead_grave> <U1f00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U1f00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U1f01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U1f01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<dead_acute> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<U0342> <U1f00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U1f01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_ALPHA> : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI
+<Multi_key> <parenright> <Greek_ALPHA> : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI
+<U0314> <Greek_ALPHA> : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA
+<Multi_key> <parenleft> <Greek_ALPHA> : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA
+<dead_grave> <U1f08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U1f08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U1f09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U1f09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<dead_acute> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<U0342> <U1f08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U1f09> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f09> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f09> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_epsilon> : "á¼" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI
+<Multi_key> <parenright> <Greek_epsilon> : "á¼" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI
+<U0314> <Greek_epsilon> : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_epsilon> : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA
+<dead_grave> <U1f10> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f10> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U1f10> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U1f11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<U0313> <Greek_EPSILON> : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI
+<Multi_key> <parenright> <Greek_EPSILON> : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI
+<U0314> <Greek_EPSILON> : "á¼™" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_EPSILON> : "á¼™" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA
+<dead_grave> <U1f18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U1f18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U1f19> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f19> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f19> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<U0313> <Greek_eta> : "á¼ " U1F20 # GREEK SMALL LETTER ETA WITH PSILI
+<Multi_key> <parenright> <Greek_eta> : "á¼ " U1F20 # GREEK SMALL LETTER ETA WITH PSILI
+<U0314> <Greek_eta> : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA
+<Multi_key> <parenleft> <Greek_eta> : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA
+<dead_grave> <U1f20> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f20> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U1f20> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U1f21> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f21> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U1f21> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<dead_acute> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<U0342> <U1f20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U1f21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_ETA> : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI
+<Multi_key> <parenright> <Greek_ETA> : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI
+<U0314> <Greek_ETA> : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA
+<Multi_key> <parenleft> <Greek_ETA> : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA
+<dead_grave> <U1f28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U1f28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U1f29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U1f29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<dead_acute> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<U0342> <U1f28> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f28> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f28> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U1f29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_iota> : "á¼°" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI
+<Multi_key> <parenright> <Greek_iota> : "á¼°" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI
+<U0314> <Greek_iota> : "á¼±" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA
+<Multi_key> <parenleft> <Greek_iota> : "á¼±" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA
+<dead_grave> <U1f30> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f30> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U1f30> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U1f31> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f31> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U1f31> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<dead_acute> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<U0342> <U1f30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U1f31> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f31> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f31> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_IOTA> : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI
+<Multi_key> <parenright> <Greek_IOTA> : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI
+<U0314> <Greek_IOTA> : "á¼¹" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA
+<Multi_key> <parenleft> <Greek_IOTA> : "á¼¹" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA
+<dead_grave> <U1f38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U1f38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U1f39> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f39> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U1f39> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<dead_acute> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<U0342> <U1f38> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f38> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f38> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U1f39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_omicron> : "á½€" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI
+<Multi_key> <parenright> <Greek_omicron> : "á½€" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI
+<U0314> <Greek_omicron> : "á½" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA
+<Multi_key> <parenleft> <Greek_omicron> : "á½" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA
+<dead_grave> <U1f40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U1f40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U1f41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U1f41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<dead_acute> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<U0313> <Greek_OMICRON> : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI
+<Multi_key> <parenright> <Greek_OMICRON> : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI
+<U0314> <Greek_OMICRON> : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA
+<Multi_key> <parenleft> <Greek_OMICRON> : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA
+<dead_grave> <U1f48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U1f48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U1f49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U1f49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<dead_acute> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<U0313> <Greek_upsilon> : "á½" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI
+<Multi_key> <parenright> <Greek_upsilon> : "á½" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI
+<U0314> <Greek_upsilon> : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_upsilon> : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA
+<dead_grave> <U1f50> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f50> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<combining_grave> <U1f50> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<dead_grave> <U1f51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<combining_acute> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<dead_acute> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<U0342> <U1f50> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f50> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f50> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<U0342> <U1f51> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f51> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f51> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0314> <Greek_UPSILON> : "á½™" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_UPSILON> : "á½™" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA
+<dead_grave> <U1f59> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f59> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f59> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<U0342> <U1f59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0313> <Greek_omega> : "á½ " U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI
+<Multi_key> <parenright> <Greek_omega> : "á½ " U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI
+<U0314> <Greek_omega> : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA
+<Multi_key> <parenleft> <Greek_omega> : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA
+<dead_grave> <U1f60> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f60> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U1f60> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U1f61> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f61> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U1f61> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<dead_acute> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<U0342> <U1f60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U1f61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_OMEGA> : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI
+<Multi_key> <parenright> <Greek_OMEGA> : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI
+<U0314> <Greek_OMEGA> : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA
+<Multi_key> <parenleft> <Greek_OMEGA> : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA
+<dead_grave> <U1f68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U1f68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U1f69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U1f69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<dead_acute> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<U0342> <U1f68> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f68> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f68> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U1f69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_grave> <Greek_alpha> : "á½°" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA
+<Multi_key> <grave> <Greek_alpha> : "á½°" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA
+<combining_grave> <Greek_alpha> : "á½°" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA
+<dead_grave> <Greek_epsilon> : "á½²" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA
+<Multi_key> <grave> <Greek_epsilon> : "á½²" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA
+<combining_grave> <Greek_epsilon> : "á½²" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA
+<dead_grave> <Greek_eta> : "á½´" U1F74 # GREEK SMALL LETTER ETA WITH VARIA
+<Multi_key> <grave> <Greek_eta> : "á½´" U1F74 # GREEK SMALL LETTER ETA WITH VARIA
+<combining_grave> <Greek_eta> : "á½´" U1F74 # GREEK SMALL LETTER ETA WITH VARIA
+<dead_grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA
+<Multi_key> <grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA
+<combining_grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA
+<dead_grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA
+<Multi_key> <grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA
+<combining_grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA
+<dead_grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA
+<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA
+<combining_grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA
+<dead_grave> <Greek_omega> : "á½¼" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA
+<Multi_key> <grave> <Greek_omega> : "á½¼" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA
+<combining_grave> <Greek_omega> : "á½¼" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA
+<dead_iota> <U1f00> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f00> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U0313> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U1f01> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f01> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U0314> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U1f02> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f02> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f03> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f03> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f04> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f04> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f05> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f05> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f06> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f06> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f07> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f07> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f08> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f08> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U0313> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U1f09> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f09> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U0314> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0a> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0a> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0b> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0b> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0c> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0c> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0d> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0d> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0e> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0e> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f0f> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0f> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f20> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f20> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U0313> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U1f21> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f21> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U0314> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U1f22> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f22> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f23> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f23> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f24> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f24> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f25> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f25> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f26> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f26> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f27> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f27> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f28> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f28> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U0313> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U1f29> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f29> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U0314> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2a> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2a> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2b> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2b> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2c> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2c> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2d> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2d> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2e> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2e> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f2f> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2f> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f60> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f60> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U0313> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U1f61> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f61> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U0314> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U1f62> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f62> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f63> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f63> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f64> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f64> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f65> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f65> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f66> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f66> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f67> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f67> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f68> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f68> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U0313> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U1f69> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f69> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U0314> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6a> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6a> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6b> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6b> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6c> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6c> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6d> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6d> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6e> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6e> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f6f> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6f> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_breve> <Greek_alpha> : "á¾°" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY
+<Multi_key> <U> <Greek_alpha> : "á¾°" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY
+<Multi_key> <b> <Greek_alpha> : "á¾°" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY
+<dead_macron> <Greek_alpha> : "á¾±" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON
+<Multi_key> <macron> <Greek_alpha> : "á¾±" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON
+<Multi_key> <underscore> <Greek_alpha> : "á¾±" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON
+<dead_iota> <U1f70> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f70> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Greek_alpha> : "á¾³" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_alpha> : "á¾³" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+<dead_iota> <Greek_alphaaccent> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_alphaaccent> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<U0342> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+<dead_tilde> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+<dead_iota> <U1fb6> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1fb6> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_breve> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+<Multi_key> <U> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+<Multi_key> <b> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+<dead_macron> <Greek_ALPHA> : "á¾¹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON
+<Multi_key> <macron> <Greek_ALPHA> : "á¾¹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON
+<Multi_key> <underscore> <Greek_ALPHA> : "á¾¹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON
+<dead_grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA
+<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA
+<combining_grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA
+<dead_iota> <Greek_ALPHA> : "á¾¼" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_ALPHA> : "á¾¼" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+<Multi_key> <diaeresis> <U0342> : "á¿" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI
+<Multi_key> <diaeresis> <dead_tilde> : "á¿" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI
+<Multi_key> <diaeresis> <asciitilde> : "á¿" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI
+<dead_iota> <U1f74> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f74> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Greek_eta> : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_eta> : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+<dead_iota> <Greek_etaaccent> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_etaaccent> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<U0342> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI
+<dead_tilde> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI
+<dead_iota> <U1fc6> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1fc6> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA
+<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA
+<combining_grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA
+<dead_grave> <Greek_ETA> : "á¿Š" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA
+<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA
+<combining_grave> <Greek_ETA> : "á¿Š" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA
+<dead_iota> <Greek_ETA> : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_ETA> : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+<Multi_key> <U1fbf> <dead_grave> : "á¿" U1FCD # GREEK PSILI AND VARIA
+<Multi_key> <U1fbf> <grave> : "á¿" U1FCD # GREEK PSILI AND VARIA
+<Multi_key> <U1fbf> <combining_grave> : "á¿" U1FCD # GREEK PSILI AND VARIA
+<Multi_key> <U1fbf> <dead_acute> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <acute> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <apostrophe> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <combining_acute> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <U0342> : "á¿" U1FCF # GREEK PSILI AND PERISPOMENI
+<Multi_key> <U1fbf> <dead_tilde> : "á¿" U1FCF # GREEK PSILI AND PERISPOMENI
+<Multi_key> <U1fbf> <asciitilde> : "á¿" U1FCF # GREEK PSILI AND PERISPOMENI
+<dead_breve> <Greek_iota> : "á¿" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY
+<Multi_key> <U> <Greek_iota> : "á¿" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY
+<Multi_key> <b> <Greek_iota> : "á¿" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY
+<dead_macron> <Greek_iota> : "á¿‘" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON
+<Multi_key> <macron> <Greek_iota> : "á¿‘" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON
+<Multi_key> <underscore> <Greek_iota> : "á¿‘" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON
+<dead_grave> <Greek_iotadieresis> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <Greek_iotadieresis> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<dead_grave> <Multi_key> <quotedbl> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<combining_grave> <Greek_iotadieresis> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<combining_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<combining_grave> <Multi_key> <quotedbl> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<U0342> <Greek_iota> : "á¿–" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+<dead_tilde> <Greek_iota> : "á¿–" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+<U0342> <Greek_iotadieresis> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Greek_iotadieresis> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <Greek_iotadieresis> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<U0342> <dead_diaeresis> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<U0342> <Multi_key> <quotedbl> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Multi_key> <quotedbl> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_breve> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY
+<Multi_key> <U> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY
+<Multi_key> <b> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY
+<dead_macron> <Greek_IOTA> : "á¿™" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON
+<Multi_key> <macron> <Greek_IOTA> : "á¿™" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON
+<Multi_key> <underscore> <Greek_IOTA> : "á¿™" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON
+<dead_grave> <Greek_IOTA> : "á¿š" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA
+<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA
+<combining_grave> <Greek_IOTA> : "á¿š" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA
+<Multi_key> <U1ffe> <dead_grave> : "á¿" U1FDD # GREEK DASIA AND VARIA
+<Multi_key> <U1ffe> <grave> : "á¿" U1FDD # GREEK DASIA AND VARIA
+<Multi_key> <U1ffe> <combining_grave> : "á¿" U1FDD # GREEK DASIA AND VARIA
+<Multi_key> <U1ffe> <dead_acute> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <acute> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <apostrophe> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <combining_acute> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <U0342> : "á¿Ÿ" U1FDF # GREEK DASIA AND PERISPOMENI
+<Multi_key> <U1ffe> <dead_tilde> : "á¿Ÿ" U1FDF # GREEK DASIA AND PERISPOMENI
+<Multi_key> <U1ffe> <asciitilde> : "á¿Ÿ" U1FDF # GREEK DASIA AND PERISPOMENI
+<dead_breve> <Greek_upsilon> : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY
+<Multi_key> <U> <Greek_upsilon> : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY
+<Multi_key> <b> <Greek_upsilon> : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY
+<dead_macron> <Greek_upsilon> : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON
+<Multi_key> <macron> <Greek_upsilon> : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON
+<Multi_key> <underscore> <Greek_upsilon> : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON
+<dead_grave> <Greek_upsilondieresis> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <Greek_upsilondieresis> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<dead_grave> <Multi_key> <quotedbl> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<combining_grave> <Greek_upsilondieresis> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<combining_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<combining_grave> <Multi_key> <quotedbl> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<U0313> <Greek_rho> : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI
+<Multi_key> <parenright> <Greek_rho> : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI
+<U0314> <Greek_rho> : "á¿¥" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA
+<Multi_key> <parenleft> <Greek_rho> : "á¿¥" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA
+<U0342> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+<dead_tilde> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+<U0342> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<U0342> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<U0342> <Multi_key> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Multi_key> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_breve> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+<Multi_key> <U> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+<Multi_key> <b> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+<dead_macron> <Greek_UPSILON> : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON
+<Multi_key> <macron> <Greek_UPSILON> : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON
+<Multi_key> <underscore> <Greek_UPSILON> : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON
+<dead_grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA
+<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA
+<combining_grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA
+<U0314> <Greek_RHO> : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA
+<Multi_key> <parenleft> <Greek_RHO> : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA
+<Multi_key> <diaeresis> <dead_grave> : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA
+<Multi_key> <diaeresis> <grave> : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA
+<Multi_key> <diaeresis> <combining_grave> : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA
+<dead_iota> <U1f7c> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f7c> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Greek_omega> : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_omega> : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+<dead_iota> <Greek_omegaaccent> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_omegaaccent> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<U0342> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+<dead_tilde> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+<dead_iota> <U1ff6> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1ff6> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA
+<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA
+<combining_grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA
+<dead_grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA
+<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA
+<combining_grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA
+<dead_iota> <Greek_OMEGA> : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_OMEGA> : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+<dead_circumflex> <0> : "â°" U2070 # SUPERSCRIPT ZERO
+<Multi_key> <asciicircum> <0> : "â°" U2070 # SUPERSCRIPT ZERO
+<dead_circumflex> <KP_0> : "â°" U2070 # SUPERSCRIPT ZERO
+<Multi_key> <asciicircum> <KP_0> : "â°" U2070 # SUPERSCRIPT ZERO
+<dead_circumflex> <Multi_key> <underscore> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<Multi_key> <asciicircum> <underscore> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<dead_circumflex> <Multi_key> <underbar> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<Multi_key> <asciicircum> <underbar> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<dead_circumflex> <4> : "â´" U2074 # SUPERSCRIPT FOUR
+<Multi_key> <asciicircum> <4> : "â´" U2074 # SUPERSCRIPT FOUR
+<dead_circumflex> <KP_4> : "â´" U2074 # SUPERSCRIPT FOUR
+<Multi_key> <asciicircum> <KP_4> : "â´" U2074 # SUPERSCRIPT FOUR
+<dead_circumflex> <5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<Multi_key> <asciicircum> <5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<dead_circumflex> <KP_5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<Multi_key> <asciicircum> <KP_5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<dead_circumflex> <6> : "â¶" U2076 # SUPERSCRIPT SIX
+<Multi_key> <asciicircum> <6> : "â¶" U2076 # SUPERSCRIPT SIX
+<dead_circumflex> <KP_6> : "â¶" U2076 # SUPERSCRIPT SIX
+<Multi_key> <asciicircum> <KP_6> : "â¶" U2076 # SUPERSCRIPT SIX
+<dead_circumflex> <7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<Multi_key> <asciicircum> <7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<dead_circumflex> <KP_7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<Multi_key> <asciicircum> <KP_7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<dead_circumflex> <8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<Multi_key> <asciicircum> <8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<dead_circumflex> <KP_8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<Multi_key> <asciicircum> <KP_8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<dead_circumflex> <9> : "â¹" U2079 # SUPERSCRIPT NINE
+<Multi_key> <asciicircum> <9> : "â¹" U2079 # SUPERSCRIPT NINE
+<dead_circumflex> <KP_9> : "â¹" U2079 # SUPERSCRIPT NINE
+<Multi_key> <asciicircum> <KP_9> : "â¹" U2079 # SUPERSCRIPT NINE
+<dead_circumflex> <plus> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<Multi_key> <asciicircum> <plus> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<dead_circumflex> <KP_Add> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<Multi_key> <asciicircum> <KP_Add> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<dead_circumflex> <U2212> : "â»" U207B # SUPERSCRIPT MINUS
+<Multi_key> <asciicircum> <U2212> : "â»" U207B # SUPERSCRIPT MINUS
+<dead_circumflex> <equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<Multi_key> <asciicircum> <equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<dead_circumflex> <KP_Equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<Multi_key> <asciicircum> <KP_Equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<dead_circumflex> <parenleft> : "â½" U207D # SUPERSCRIPT LEFT PARENTHESIS
+<Multi_key> <asciicircum> <parenleft> : "â½" U207D # SUPERSCRIPT LEFT PARENTHESIS
+<dead_circumflex> <parenright> : "â¾" U207E # SUPERSCRIPT RIGHT PARENTHESIS
+<Multi_key> <asciicircum> <parenright> : "â¾" U207E # SUPERSCRIPT RIGHT PARENTHESIS
+<dead_circumflex> <Multi_key> <underscore> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<Multi_key> <asciicircum> <underscore> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<dead_circumflex> <Multi_key> <underbar> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<Multi_key> <asciicircum> <underbar> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<Multi_key> <underscore> <0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underscore> <KP_0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underbar> <0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underbar> <KP_0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underscore> <1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underscore> <KP_1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underbar> <1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underbar> <KP_1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underscore> <2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underscore> <KP_Space> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underscore> <KP_2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underbar> <2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underbar> <KP_Space> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underbar> <KP_2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underscore> <3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underscore> <KP_3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underbar> <3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underbar> <KP_3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underscore> <4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underscore> <KP_4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underbar> <4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underbar> <KP_4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underscore> <5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underscore> <KP_5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underbar> <5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underbar> <KP_5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underscore> <6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underscore> <KP_6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underbar> <6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underbar> <KP_6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underscore> <7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underscore> <KP_7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underbar> <7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underbar> <KP_7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underscore> <8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underscore> <KP_8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underbar> <8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underbar> <KP_8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underscore> <9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underscore> <KP_9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underbar> <9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underbar> <KP_9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underscore> <plus> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underscore> <KP_Add> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underbar> <plus> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underbar> <KP_Add> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underscore> <U2212> : "â‚‹" U208B # SUBSCRIPT MINUS
+<Multi_key> <underbar> <U2212> : "â‚‹" U208B # SUBSCRIPT MINUS
+<Multi_key> <underscore> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underscore> <KP_Equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underbar> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underbar> <KP_Equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underscore> <parenleft> : "â‚" U208D # SUBSCRIPT LEFT PARENTHESIS
+<Multi_key> <underbar> <parenleft> : "â‚" U208D # SUBSCRIPT LEFT PARENTHESIS
+<Multi_key> <underscore> <parenright> : "â‚Ž" U208E # SUBSCRIPT RIGHT PARENTHESIS
+<Multi_key> <underbar> <parenright> : "â‚Ž" U208E # SUBSCRIPT RIGHT PARENTHESIS
+<dead_circumflex> <Multi_key> <S> <M> : "â„ " U2120 # SERVICE MARK
+<Multi_key> <asciicircum> <S> <M> : "â„ " U2120 # SERVICE MARK
+<dead_circumflex> <Multi_key> <T> <M> : "â„¢" U2122 # TRADE MARK SIGN
+<Multi_key> <asciicircum> <T> <M> : "â„¢" U2122 # TRADE MARK SIGN
+<Multi_key> <slash> <leftarrow> : "↚" U219A # LEFTWARDS ARROW WITH STROKE
+<Multi_key> <KP_Divide> <leftarrow> : "↚" U219A # LEFTWARDS ARROW WITH STROKE
+<Multi_key> <slash> <rightarrow> : "↛" U219B # RIGHTWARDS ARROW WITH STROKE
+<Multi_key> <KP_Divide> <rightarrow> : "↛" U219B # RIGHTWARDS ARROW WITH STROKE
+<Multi_key> <slash> <U2194> : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE
+<Multi_key> <KP_Divide> <U2194> : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE
+<Multi_key> <U2203> <U0338> : "∄" U2204 # THERE DOES NOT EXIST
+<Multi_key> <U2208> <U0338> : "∉" U2209 # NOT AN ELEMENT OF
+<Multi_key> <U220b> <U0338> : "∌" U220C # DOES NOT CONTAIN AS MEMBER
+<Multi_key> <U2223> <U0338> : "∤" U2224 # DOES NOT DIVIDE
+<Multi_key> <U2225> <U0338> : "∦" U2226 # NOT PARALLEL TO
+<Multi_key> <U223c> <U0338> : "â‰" U2241 # NOT TILDE
+<Multi_key> <U2243> <U0338> : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO
+<Multi_key> <approximate> <U0338> : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+<Multi_key> <U2248> <U0338> : "≉" U2249 # NOT ALMOST EQUAL TO
+<Multi_key> <equal> <U0338> : "≠" U2260 # NOT EQUAL TO
+<Multi_key> <KP_Equal> <U0338> : "≠" U2260 # NOT EQUAL TO
+<Multi_key> <identical> <U0338> : "≢" U2262 # NOT IDENTICAL TO
+<Multi_key> <U224d> <U0338> : "≭" U226D # NOT EQUIVALENT TO
+<Multi_key> <less> <U0338> : "≮" U226E # NOT LESS-THAN
+<Multi_key> <leftcaret> <U0338> : "≮" U226E # NOT LESS-THAN
+<Multi_key> <greater> <U0338> : "≯" U226F # NOT GREATER-THAN
+<Multi_key> <rightcaret> <U0338> : "≯" U226F # NOT GREATER-THAN
+<Multi_key> <lessthanequal> <U0338> : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO
+<Multi_key> <greaterthanequal> <U0338> : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO
+<Multi_key> <U2272> <U0338> : "≴" U2274 # NEITHER LESS-THAN NOR EQUIVALENT TO
+<Multi_key> <U2273> <U0338> : "≵" U2275 # NEITHER GREATER-THAN NOR EQUIVALENT TO
+<Multi_key> <U2276> <U0338> : "≸" U2278 # NEITHER LESS-THAN NOR GREATER-THAN
+<Multi_key> <U2277> <U0338> : "≹" U2279 # NEITHER GREATER-THAN NOR LESS-THAN
+<Multi_key> <U227a> <U0338> : "⊀" U2280 # DOES NOT PRECEDE
+<Multi_key> <U227b> <U0338> : "âŠ" U2281 # DOES NOT SUCCEED
+<Multi_key> <includedin> <U0338> : "⊄" U2284 # NOT A SUBSET OF
+<Multi_key> <leftshoe> <U0338> : "⊄" U2284 # NOT A SUBSET OF
+<Multi_key> <includes> <U0338> : "⊅" U2285 # NOT A SUPERSET OF
+<Multi_key> <rightshoe> <U0338> : "⊅" U2285 # NOT A SUPERSET OF
+<Multi_key> <U2286> <U0338> : "⊈" U2288 # NEITHER A SUBSET OF NOR EQUAL TO
+<Multi_key> <U2287> <U0338> : "⊉" U2289 # NEITHER A SUPERSET OF NOR EQUAL TO
+<Multi_key> <righttack> <U0338> : "⊬" U22AC # DOES NOT PROVE
+<Multi_key> <U22a8> <U0338> : "⊭" U22AD # NOT TRUE
+<Multi_key> <U22a9> <U0338> : "⊮" U22AE # DOES NOT FORCE
+<Multi_key> <U22ab> <U0338> : "⊯" U22AF # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+<Multi_key> <U227c> <U0338> : "â‹ " U22E0 # DOES NOT PRECEDE OR EQUAL
+<Multi_key> <U227d> <U0338> : "â‹¡" U22E1 # DOES NOT SUCCEED OR EQUAL
+<Multi_key> <U2291> <U0338> : "â‹¢" U22E2 # NOT SQUARE IMAGE OF OR EQUAL TO
+<Multi_key> <U2292> <U0338> : "â‹£" U22E3 # NOT SQUARE ORIGINAL OF OR EQUAL TO
+<Multi_key> <U22b2> <U0338> : "⋪" U22EA # NOT NORMAL SUBGROUP OF
+<Multi_key> <U22b3> <U0338> : "â‹«" U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP
+<Multi_key> <U22b4> <U0338> : "⋬" U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO
+<Multi_key> <U22b5> <U0338> : "â‹­" U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+<Multi_key> <parenleft> <1> <parenright> : "â‘ " U2460 # CIRCLED DIGIT ONE
+<Multi_key> <parenleft> <KP_1> <parenright> : "â‘ " U2460 # CIRCLED DIGIT ONE
+<Multi_key> <parenleft> <2> <parenright> : "â‘¡" U2461 # CIRCLED DIGIT TWO
+<Multi_key> <parenleft> <KP_Space> <parenright> : "â‘¡" U2461 # CIRCLED DIGIT TWO
+<Multi_key> <parenleft> <KP_2> <parenright> : "â‘¡" U2461 # CIRCLED DIGIT TWO
+<Multi_key> <parenleft> <3> <parenright> : "â‘¢" U2462 # CIRCLED DIGIT THREE
+<Multi_key> <parenleft> <KP_3> <parenright> : "â‘¢" U2462 # CIRCLED DIGIT THREE
+<Multi_key> <parenleft> <4> <parenright> : "â‘£" U2463 # CIRCLED DIGIT FOUR
+<Multi_key> <parenleft> <KP_4> <parenright> : "â‘£" U2463 # CIRCLED DIGIT FOUR
+<Multi_key> <parenleft> <5> <parenright> : "⑤" U2464 # CIRCLED DIGIT FIVE
+<Multi_key> <parenleft> <KP_5> <parenright> : "⑤" U2464 # CIRCLED DIGIT FIVE
+<Multi_key> <parenleft> <6> <parenright> : "â‘¥" U2465 # CIRCLED DIGIT SIX
+<Multi_key> <parenleft> <KP_6> <parenright> : "â‘¥" U2465 # CIRCLED DIGIT SIX
+<Multi_key> <parenleft> <7> <parenright> : "⑦" U2466 # CIRCLED DIGIT SEVEN
+<Multi_key> <parenleft> <KP_7> <parenright> : "⑦" U2466 # CIRCLED DIGIT SEVEN
+<Multi_key> <parenleft> <8> <parenright> : "⑧" U2467 # CIRCLED DIGIT EIGHT
+<Multi_key> <parenleft> <KP_8> <parenright> : "⑧" U2467 # CIRCLED DIGIT EIGHT
+<Multi_key> <parenleft> <9> <parenright> : "⑨" U2468 # CIRCLED DIGIT NINE
+<Multi_key> <parenleft> <KP_9> <parenright> : "⑨" U2468 # CIRCLED DIGIT NINE
+<Multi_key> <parenleft> <1> <0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <1> <KP_0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <KP_1> <0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <KP_1> <KP_0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <1> <1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <1> <KP_1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <KP_1> <1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <KP_1> <KP_1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <1> <2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <1> <KP_Space> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <1> <KP_2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <KP_1> <2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <KP_1> <KP_Space> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <KP_1> <KP_2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <1> <3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <1> <KP_3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <KP_1> <3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <KP_1> <KP_3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <1> <4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <1> <KP_4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <KP_1> <4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <KP_1> <KP_4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <1> <5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <1> <KP_5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <KP_1> <5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <KP_1> <KP_5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <1> <6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <1> <KP_6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <KP_1> <6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <KP_1> <KP_6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <1> <7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <1> <KP_7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <KP_1> <7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <KP_1> <KP_7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <1> <8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <1> <KP_8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <KP_1> <8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <KP_1> <KP_8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <1> <9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <1> <KP_9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <KP_1> <9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <KP_1> <KP_9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <2> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <2> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_Space> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_Space> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_2> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_2> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <A> <parenright> : "â’¶" U24B6 # CIRCLED LATIN CAPITAL LETTER A
+<Multi_key> <parenleft> <B> <parenright> : "â’·" U24B7 # CIRCLED LATIN CAPITAL LETTER B
+<Multi_key> <parenleft> <C> <parenright> : "â’¸" U24B8 # CIRCLED LATIN CAPITAL LETTER C
+<Multi_key> <parenleft> <D> <parenright> : "â’¹" U24B9 # CIRCLED LATIN CAPITAL LETTER D
+<Multi_key> <parenleft> <E> <parenright> : "â’º" U24BA # CIRCLED LATIN CAPITAL LETTER E
+<Multi_key> <parenleft> <F> <parenright> : "â’»" U24BB # CIRCLED LATIN CAPITAL LETTER F
+<Multi_key> <parenleft> <G> <parenright> : "â’¼" U24BC # CIRCLED LATIN CAPITAL LETTER G
+<Multi_key> <parenleft> <H> <parenright> : "â’½" U24BD # CIRCLED LATIN CAPITAL LETTER H
+<Multi_key> <parenleft> <I> <parenright> : "â’¾" U24BE # CIRCLED LATIN CAPITAL LETTER I
+<Multi_key> <parenleft> <J> <parenright> : "â’¿" U24BF # CIRCLED LATIN CAPITAL LETTER J
+<Multi_key> <parenleft> <K> <parenright> : "â“€" U24C0 # CIRCLED LATIN CAPITAL LETTER K
+<Multi_key> <parenleft> <L> <parenright> : "â“" U24C1 # CIRCLED LATIN CAPITAL LETTER L
+<Multi_key> <parenleft> <M> <parenright> : "â“‚" U24C2 # CIRCLED LATIN CAPITAL LETTER M
+<Multi_key> <parenleft> <N> <parenright> : "Ⓝ" U24C3 # CIRCLED LATIN CAPITAL LETTER N
+<Multi_key> <parenleft> <O> <parenright> : "â“„" U24C4 # CIRCLED LATIN CAPITAL LETTER O
+<Multi_key> <parenleft> <P> <parenright> : "â“…" U24C5 # CIRCLED LATIN CAPITAL LETTER P
+<Multi_key> <parenleft> <Q> <parenright> : "Ⓠ" U24C6 # CIRCLED LATIN CAPITAL LETTER Q
+<Multi_key> <parenleft> <R> <parenright> : "Ⓡ" U24C7 # CIRCLED LATIN CAPITAL LETTER R
+<Multi_key> <parenleft> <S> <parenright> : "Ⓢ" U24C8 # CIRCLED LATIN CAPITAL LETTER S
+<Multi_key> <parenleft> <T> <parenright> : "Ⓣ" U24C9 # CIRCLED LATIN CAPITAL LETTER T
+<Multi_key> <parenleft> <U> <parenright> : "â“Š" U24CA # CIRCLED LATIN CAPITAL LETTER U
+<Multi_key> <parenleft> <V> <parenright> : "â“‹" U24CB # CIRCLED LATIN CAPITAL LETTER V
+<Multi_key> <parenleft> <W> <parenright> : "Ⓦ" U24CC # CIRCLED LATIN CAPITAL LETTER W
+<Multi_key> <parenleft> <X> <parenright> : "â“" U24CD # CIRCLED LATIN CAPITAL LETTER X
+<Multi_key> <parenleft> <Y> <parenright> : "â“Ž" U24CE # CIRCLED LATIN CAPITAL LETTER Y
+<Multi_key> <parenleft> <Z> <parenright> : "â“" U24CF # CIRCLED LATIN CAPITAL LETTER Z
+<Multi_key> <parenleft> <a> <parenright> : "â“" U24D0 # CIRCLED LATIN SMALL LETTER A
+<Multi_key> <parenleft> <b> <parenright> : "â“‘" U24D1 # CIRCLED LATIN SMALL LETTER B
+<Multi_key> <parenleft> <c> <parenright> : "â“’" U24D2 # CIRCLED LATIN SMALL LETTER C
+<Multi_key> <parenleft> <d> <parenright> : "â““" U24D3 # CIRCLED LATIN SMALL LETTER D
+<Multi_key> <parenleft> <e> <parenright> : "â“”" U24D4 # CIRCLED LATIN SMALL LETTER E
+<Multi_key> <parenleft> <f> <parenright> : "â“•" U24D5 # CIRCLED LATIN SMALL LETTER F
+<Multi_key> <parenleft> <g> <parenright> : "â“–" U24D6 # CIRCLED LATIN SMALL LETTER G
+<Multi_key> <parenleft> <h> <parenright> : "â“—" U24D7 # CIRCLED LATIN SMALL LETTER H
+<Multi_key> <parenleft> <i> <parenright> : "ⓘ" U24D8 # CIRCLED LATIN SMALL LETTER I
+<Multi_key> <parenleft> <j> <parenright> : "â“™" U24D9 # CIRCLED LATIN SMALL LETTER J
+<Multi_key> <parenleft> <k> <parenright> : "â“š" U24DA # CIRCLED LATIN SMALL LETTER K
+<Multi_key> <parenleft> <l> <parenright> : "â“›" U24DB # CIRCLED LATIN SMALL LETTER L
+<Multi_key> <parenleft> <m> <parenright> : "ⓜ" U24DC # CIRCLED LATIN SMALL LETTER M
+<Multi_key> <parenleft> <n> <parenright> : "â“" U24DD # CIRCLED LATIN SMALL LETTER N
+<Multi_key> <parenleft> <o> <parenright> : "â“ž" U24DE # CIRCLED LATIN SMALL LETTER O
+<Multi_key> <parenleft> <p> <parenright> : "â“Ÿ" U24DF # CIRCLED LATIN SMALL LETTER P
+<Multi_key> <parenleft> <q> <parenright> : "â“ " U24E0 # CIRCLED LATIN SMALL LETTER Q
+<Multi_key> <parenleft> <r> <parenright> : "â“¡" U24E1 # CIRCLED LATIN SMALL LETTER R
+<Multi_key> <parenleft> <s> <parenright> : "â“¢" U24E2 # CIRCLED LATIN SMALL LETTER S
+<Multi_key> <parenleft> <t> <parenright> : "â“£" U24E3 # CIRCLED LATIN SMALL LETTER T
+<Multi_key> <parenleft> <u> <parenright> : "ⓤ" U24E4 # CIRCLED LATIN SMALL LETTER U
+<Multi_key> <parenleft> <v> <parenright> : "â“¥" U24E5 # CIRCLED LATIN SMALL LETTER V
+<Multi_key> <parenleft> <w> <parenright> : "ⓦ" U24E6 # CIRCLED LATIN SMALL LETTER W
+<Multi_key> <parenleft> <x> <parenright> : "ⓧ" U24E7 # CIRCLED LATIN SMALL LETTER X
+<Multi_key> <parenleft> <y> <parenright> : "ⓨ" U24E8 # CIRCLED LATIN SMALL LETTER Y
+<Multi_key> <parenleft> <z> <parenright> : "â“©" U24E9 # CIRCLED LATIN SMALL LETTER Z
+<Multi_key> <parenleft> <0> <parenright> : "⓪" U24EA # CIRCLED DIGIT ZERO
+<Multi_key> <parenleft> <KP_0> <parenright> : "⓪" U24EA # CIRCLED DIGIT ZERO
+<Multi_key> <U2add> <U0338> : "⫝̸" U2ADC # FORKING
+<dead_voiced_sound> <U304b> : "ãŒ" U304C # HIRAGANA LETTER GA
+<dead_voiced_sound> <U304d> : "ãŽ" U304E # HIRAGANA LETTER GI
+<dead_voiced_sound> <U304f> : "ã" U3050 # HIRAGANA LETTER GU
+<dead_voiced_sound> <U3051> : "ã’" U3052 # HIRAGANA LETTER GE
+<dead_voiced_sound> <U3053> : "ã”" U3054 # HIRAGANA LETTER GO
+<dead_voiced_sound> <U3055> : "ã–" U3056 # HIRAGANA LETTER ZA
+<dead_voiced_sound> <U3057> : "ã˜" U3058 # HIRAGANA LETTER ZI
+<dead_voiced_sound> <U3059> : "ãš" U305A # HIRAGANA LETTER ZU
+<dead_voiced_sound> <U305b> : "ãœ" U305C # HIRAGANA LETTER ZE
+<dead_voiced_sound> <U305d> : "ãž" U305E # HIRAGANA LETTER ZO
+<dead_voiced_sound> <U305f> : "ã " U3060 # HIRAGANA LETTER DA
+<dead_voiced_sound> <U3061> : "ã¢" U3062 # HIRAGANA LETTER DI
+<dead_voiced_sound> <U3064> : "ã¥" U3065 # HIRAGANA LETTER DU
+<dead_voiced_sound> <U3066> : "ã§" U3067 # HIRAGANA LETTER DE
+<dead_voiced_sound> <U3068> : "ã©" U3069 # HIRAGANA LETTER DO
+<dead_voiced_sound> <U306f> : "ã°" U3070 # HIRAGANA LETTER BA
+<dead_semivoiced_sound> <U306f> : "ã±" U3071 # HIRAGANA LETTER PA
+<dead_voiced_sound> <U3072> : "ã³" U3073 # HIRAGANA LETTER BI
+<dead_semivoiced_sound> <U3072> : "ã´" U3074 # HIRAGANA LETTER PI
+<dead_voiced_sound> <U3075> : "ã¶" U3076 # HIRAGANA LETTER BU
+<dead_semivoiced_sound> <U3075> : "ã·" U3077 # HIRAGANA LETTER PU
+<dead_voiced_sound> <U3078> : "ã¹" U3079 # HIRAGANA LETTER BE
+<dead_semivoiced_sound> <U3078> : "ãº" U307A # HIRAGANA LETTER PE
+<dead_voiced_sound> <U307b> : "ã¼" U307C # HIRAGANA LETTER BO
+<dead_semivoiced_sound> <U307b> : "ã½" U307D # HIRAGANA LETTER PO
+<dead_voiced_sound> <U3046> : "ã‚”" U3094 # HIRAGANA LETTER VU
+<dead_voiced_sound> <U309d> : "ã‚ž" U309E # HIRAGANA VOICED ITERATION MARK
+<dead_voiced_sound> <kana_KA> : "ガ" U30AC # KATAKANA LETTER GA
+<dead_voiced_sound> <kana_KI> : "ã‚®" U30AE # KATAKANA LETTER GI
+<dead_voiced_sound> <kana_KU> : "ã‚°" U30B0 # KATAKANA LETTER GU
+<dead_voiced_sound> <kana_KE> : "ゲ" U30B2 # KATAKANA LETTER GE
+<dead_voiced_sound> <kana_KO> : "ã‚´" U30B4 # KATAKANA LETTER GO
+<dead_voiced_sound> <kana_SA> : "ザ" U30B6 # KATAKANA LETTER ZA
+<dead_voiced_sound> <kana_SHI> : "ジ" U30B8 # KATAKANA LETTER ZI
+<dead_voiced_sound> <kana_SU> : "ズ" U30BA # KATAKANA LETTER ZU
+<dead_voiced_sound> <kana_SE> : "ゼ" U30BC # KATAKANA LETTER ZE
+<dead_voiced_sound> <kana_SO> : "ゾ" U30BE # KATAKANA LETTER ZO
+<dead_voiced_sound> <kana_TA> : "ダ" U30C0 # KATAKANA LETTER DA
+<dead_voiced_sound> <kana_CHI> : "ヂ" U30C2 # KATAKANA LETTER DI
+<dead_voiced_sound> <kana_TSU> : "ヅ" U30C5 # KATAKANA LETTER DU
+<dead_voiced_sound> <kana_TE> : "デ" U30C7 # KATAKANA LETTER DE
+<dead_voiced_sound> <kana_TO> : "ド" U30C9 # KATAKANA LETTER DO
+<dead_voiced_sound> <kana_HA> : "ãƒ" U30D0 # KATAKANA LETTER BA
+<dead_semivoiced_sound> <kana_HA> : "パ" U30D1 # KATAKANA LETTER PA
+<dead_voiced_sound> <kana_HI> : "ビ" U30D3 # KATAKANA LETTER BI
+<dead_semivoiced_sound> <kana_HI> : "ピ" U30D4 # KATAKANA LETTER PI
+<dead_voiced_sound> <kana_FU> : "ブ" U30D6 # KATAKANA LETTER BU
+<dead_semivoiced_sound> <kana_FU> : "プ" U30D7 # KATAKANA LETTER PU
+<dead_voiced_sound> <kana_HE> : "ベ" U30D9 # KATAKANA LETTER BE
+<dead_semivoiced_sound> <kana_HE> : "ペ" U30DA # KATAKANA LETTER PE
+<dead_voiced_sound> <kana_HO> : "ボ" U30DC # KATAKANA LETTER BO
+<dead_semivoiced_sound> <kana_HO> : "ãƒ" U30DD # KATAKANA LETTER PO
+<dead_voiced_sound> <kana_U> : "ヴ" U30F4 # KATAKANA LETTER VU
+<dead_voiced_sound> <kana_WA> : "ヷ" U30F7 # KATAKANA LETTER VA
+<dead_voiced_sound> <U30f0> : "ヸ" U30F8 # KATAKANA LETTER VI
+<dead_voiced_sound> <U30f1> : "ヹ" U30F9 # KATAKANA LETTER VE
+<dead_voiced_sound> <kana_WO> : "ヺ" U30FA # KATAKANA LETTER VO
+<dead_voiced_sound> <U30fd> : "ヾ" U30FE # KATAKANA VOICED ITERATION MARK
+<dead_circumflex> <U4e00> : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK
+<Multi_key> <asciicircum> <U4e00> : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK
+<dead_circumflex> <U4e8c> : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK
+<Multi_key> <asciicircum> <U4e8c> : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK
+<dead_circumflex> <U4e09> : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK
+<Multi_key> <asciicircum> <U4e09> : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK
+<dead_circumflex> <U56db> : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK
+<Multi_key> <asciicircum> <U56db> : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK
+<dead_circumflex> <U4e0a> : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK
+<Multi_key> <asciicircum> <U4e0a> : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK
+<dead_circumflex> <U4e2d> : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+<Multi_key> <asciicircum> <U4e2d> : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+<dead_circumflex> <U4e0b> : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+<Multi_key> <asciicircum> <U4e0b> : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+<dead_circumflex> <U7532> : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK
+<Multi_key> <asciicircum> <U7532> : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK
+<dead_circumflex> <U4e59> : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK
+<Multi_key> <asciicircum> <U4e59> : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK
+<dead_circumflex> <U4e19> : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK
+<Multi_key> <asciicircum> <U4e19> : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK
+<dead_circumflex> <U4e01> : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK
+<Multi_key> <asciicircum> <U4e01> : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK
+<dead_circumflex> <U5929> : "ã†" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+<Multi_key> <asciicircum> <U5929> : "ã†" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+<dead_circumflex> <U5730> : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK
+<Multi_key> <asciicircum> <U5730> : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK
+<dead_circumflex> <U4eba> : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK
+<Multi_key> <asciicircum> <U4eba> : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK
+<Multi_key> <parenleft> <2> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <2> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_Space> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_Space> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_2> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_2> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <2> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <2> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <2> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_Space> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_Space> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_Space> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_2> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_2> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_2> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <2> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <2> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_Space> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_Space> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_2> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_2> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <2> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <2> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_Space> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_Space> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_2> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_2> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <2> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <2> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_Space> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_Space> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_2> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_2> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <2> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <2> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_Space> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_Space> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_2> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_2> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <2> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <2> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_Space> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_Space> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_2> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_2> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <2> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <2> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_Space> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_Space> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_2> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_2> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <2> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <2> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_Space> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_Space> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_2> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_2> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <3> <0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <3> <KP_0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <KP_3> <0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <KP_3> <KP_0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <3> <1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <3> <KP_1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <KP_3> <1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <KP_3> <KP_1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <3> <2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <3> <KP_Space> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <3> <KP_2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <KP_3> <2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <KP_3> <KP_Space> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <KP_3> <KP_2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <3> <3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <3> <KP_3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <KP_3> <3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <KP_3> <KP_3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <3> <4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <3> <KP_4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <KP_3> <4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <KP_3> <KP_4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <3> <5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <3> <KP_5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <KP_3> <5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <KP_3> <KP_5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <U1100> <parenright> : "㉠" U3260 # CIRCLED HANGUL KIYEOK
+<Multi_key> <parenleft> <U1102> <parenright> : "㉡" U3261 # CIRCLED HANGUL NIEUN
+<Multi_key> <parenleft> <U1103> <parenright> : "㉢" U3262 # CIRCLED HANGUL TIKEUT
+<Multi_key> <parenleft> <U1105> <parenright> : "㉣" U3263 # CIRCLED HANGUL RIEUL
+<Multi_key> <parenleft> <U1106> <parenright> : "㉤" U3264 # CIRCLED HANGUL MIEUM
+<Multi_key> <parenleft> <U1107> <parenright> : "㉥" U3265 # CIRCLED HANGUL PIEUP
+<Multi_key> <parenleft> <U1109> <parenright> : "㉦" U3266 # CIRCLED HANGUL SIOS
+<Multi_key> <parenleft> <U110b> <parenright> : "㉧" U3267 # CIRCLED HANGUL IEUNG
+<Multi_key> <parenleft> <U110c> <parenright> : "㉨" U3268 # CIRCLED HANGUL CIEUC
+<Multi_key> <parenleft> <U110e> <parenright> : "㉩" U3269 # CIRCLED HANGUL CHIEUCH
+<Multi_key> <parenleft> <U110f> <parenright> : "㉪" U326A # CIRCLED HANGUL KHIEUKH
+<Multi_key> <parenleft> <U1110> <parenright> : "㉫" U326B # CIRCLED HANGUL THIEUTH
+<Multi_key> <parenleft> <U1111> <parenright> : "㉬" U326C # CIRCLED HANGUL PHIEUPH
+<Multi_key> <parenleft> <U1112> <parenright> : "㉭" U326D # CIRCLED HANGUL HIEUH
+<Multi_key> <parenleft> <U1100> <U1161> <parenright> : "㉮" U326E # CIRCLED HANGUL KIYEOK A
+<Multi_key> <parenleft> <U1102> <U1161> <parenright> : "㉯" U326F # CIRCLED HANGUL NIEUN A
+<Multi_key> <parenleft> <U1103> <U1161> <parenright> : "㉰" U3270 # CIRCLED HANGUL TIKEUT A
+<Multi_key> <parenleft> <U1105> <U1161> <parenright> : "㉱" U3271 # CIRCLED HANGUL RIEUL A
+<Multi_key> <parenleft> <U1106> <U1161> <parenright> : "㉲" U3272 # CIRCLED HANGUL MIEUM A
+<Multi_key> <parenleft> <U1107> <U1161> <parenright> : "㉳" U3273 # CIRCLED HANGUL PIEUP A
+<Multi_key> <parenleft> <U1109> <U1161> <parenright> : "㉴" U3274 # CIRCLED HANGUL SIOS A
+<Multi_key> <parenleft> <U110b> <U1161> <parenright> : "㉵" U3275 # CIRCLED HANGUL IEUNG A
+<Multi_key> <parenleft> <U110c> <U1161> <parenright> : "㉶" U3276 # CIRCLED HANGUL CIEUC A
+<Multi_key> <parenleft> <U110e> <U1161> <parenright> : "㉷" U3277 # CIRCLED HANGUL CHIEUCH A
+<Multi_key> <parenleft> <U110f> <U1161> <parenright> : "㉸" U3278 # CIRCLED HANGUL KHIEUKH A
+<Multi_key> <parenleft> <U1110> <U1161> <parenright> : "㉹" U3279 # CIRCLED HANGUL THIEUTH A
+<Multi_key> <parenleft> <U1111> <U1161> <parenright> : "㉺" U327A # CIRCLED HANGUL PHIEUPH A
+<Multi_key> <parenleft> <U1112> <U1161> <parenright> : "㉻" U327B # CIRCLED HANGUL HIEUH A
+<Multi_key> <parenleft> <U4e00> <parenright> : "㊀" U3280 # CIRCLED IDEOGRAPH ONE
+<Multi_key> <parenleft> <U4e8c> <parenright> : "ãŠ" U3281 # CIRCLED IDEOGRAPH TWO
+<Multi_key> <parenleft> <U4e09> <parenright> : "㊂" U3282 # CIRCLED IDEOGRAPH THREE
+<Multi_key> <parenleft> <U56db> <parenright> : "㊃" U3283 # CIRCLED IDEOGRAPH FOUR
+<Multi_key> <parenleft> <U4e94> <parenright> : "㊄" U3284 # CIRCLED IDEOGRAPH FIVE
+<Multi_key> <parenleft> <U516d> <parenright> : "㊅" U3285 # CIRCLED IDEOGRAPH SIX
+<Multi_key> <parenleft> <U4e03> <parenright> : "㊆" U3286 # CIRCLED IDEOGRAPH SEVEN
+<Multi_key> <parenleft> <U516b> <parenright> : "㊇" U3287 # CIRCLED IDEOGRAPH EIGHT
+<Multi_key> <parenleft> <U4e5d> <parenright> : "㊈" U3288 # CIRCLED IDEOGRAPH NINE
+<Multi_key> <parenleft> <U5341> <parenright> : "㊉" U3289 # CIRCLED IDEOGRAPH TEN
+<Multi_key> <parenleft> <U6708> <parenright> : "㊊" U328A # CIRCLED IDEOGRAPH MOON
+<Multi_key> <parenleft> <U706b> <parenright> : "㊋" U328B # CIRCLED IDEOGRAPH FIRE
+<Multi_key> <parenleft> <U6c34> <parenright> : "㊌" U328C # CIRCLED IDEOGRAPH WATER
+<Multi_key> <parenleft> <U6728> <parenright> : "ãŠ" U328D # CIRCLED IDEOGRAPH WOOD
+<Multi_key> <parenleft> <U91d1> <parenright> : "㊎" U328E # CIRCLED IDEOGRAPH METAL
+<Multi_key> <parenleft> <U571f> <parenright> : "ãŠ" U328F # CIRCLED IDEOGRAPH EARTH
+<Multi_key> <parenleft> <U65e5> <parenright> : "ãŠ" U3290 # CIRCLED IDEOGRAPH SUN
+<Multi_key> <parenleft> <U682a> <parenright> : "㊑" U3291 # CIRCLED IDEOGRAPH STOCK
+<Multi_key> <parenleft> <U6709> <parenright> : "㊒" U3292 # CIRCLED IDEOGRAPH HAVE
+<Multi_key> <parenleft> <U793e> <parenright> : "㊓" U3293 # CIRCLED IDEOGRAPH SOCIETY
+<Multi_key> <parenleft> <U540d> <parenright> : "㊔" U3294 # CIRCLED IDEOGRAPH NAME
+<Multi_key> <parenleft> <U7279> <parenright> : "㊕" U3295 # CIRCLED IDEOGRAPH SPECIAL
+<Multi_key> <parenleft> <U8ca1> <parenright> : "㊖" U3296 # CIRCLED IDEOGRAPH FINANCIAL
+<Multi_key> <parenleft> <U795d> <parenright> : "㊗" U3297 # CIRCLED IDEOGRAPH CONGRATULATION
+<Multi_key> <parenleft> <U52b4> <parenright> : "㊘" U3298 # CIRCLED IDEOGRAPH LABOR
+<Multi_key> <parenleft> <U79d8> <parenright> : "㊙" U3299 # CIRCLED IDEOGRAPH SECRET
+<Multi_key> <parenleft> <U7537> <parenright> : "㊚" U329A # CIRCLED IDEOGRAPH MALE
+<Multi_key> <parenleft> <U5973> <parenright> : "㊛" U329B # CIRCLED IDEOGRAPH FEMALE
+<Multi_key> <parenleft> <U9069> <parenright> : "㊜" U329C # CIRCLED IDEOGRAPH SUITABLE
+<Multi_key> <parenleft> <U512a> <parenright> : "ãŠ" U329D # CIRCLED IDEOGRAPH EXCELLENT
+<Multi_key> <parenleft> <U5370> <parenright> : "㊞" U329E # CIRCLED IDEOGRAPH PRINT
+<Multi_key> <parenleft> <U6ce8> <parenright> : "㊟" U329F # CIRCLED IDEOGRAPH ATTENTION
+<Multi_key> <parenleft> <U9805> <parenright> : "㊠" U32A0 # CIRCLED IDEOGRAPH ITEM
+<Multi_key> <parenleft> <U4f11> <parenright> : "㊡" U32A1 # CIRCLED IDEOGRAPH REST
+<Multi_key> <parenleft> <U5199> <parenright> : "㊢" U32A2 # CIRCLED IDEOGRAPH COPY
+<Multi_key> <parenleft> <U6b63> <parenright> : "㊣" U32A3 # CIRCLED IDEOGRAPH CORRECT
+<Multi_key> <parenleft> <U4e0a> <parenright> : "㊤" U32A4 # CIRCLED IDEOGRAPH HIGH
+<Multi_key> <parenleft> <U4e2d> <parenright> : "㊥" U32A5 # CIRCLED IDEOGRAPH CENTRE
+<Multi_key> <parenleft> <U4e0b> <parenright> : "㊦" U32A6 # CIRCLED IDEOGRAPH LOW
+<Multi_key> <parenleft> <U5de6> <parenright> : "㊧" U32A7 # CIRCLED IDEOGRAPH LEFT
+<Multi_key> <parenleft> <U53f3> <parenright> : "㊨" U32A8 # CIRCLED IDEOGRAPH RIGHT
+<Multi_key> <parenleft> <U533b> <parenright> : "㊩" U32A9 # CIRCLED IDEOGRAPH MEDICINE
+<Multi_key> <parenleft> <U5b97> <parenright> : "㊪" U32AA # CIRCLED IDEOGRAPH RELIGION
+<Multi_key> <parenleft> <U5b66> <parenright> : "㊫" U32AB # CIRCLED IDEOGRAPH STUDY
+<Multi_key> <parenleft> <U76e3> <parenright> : "㊬" U32AC # CIRCLED IDEOGRAPH SUPERVISE
+<Multi_key> <parenleft> <U4f01> <parenright> : "㊭" U32AD # CIRCLED IDEOGRAPH ENTERPRISE
+<Multi_key> <parenleft> <U8cc7> <parenright> : "㊮" U32AE # CIRCLED IDEOGRAPH RESOURCE
+<Multi_key> <parenleft> <U5354> <parenright> : "㊯" U32AF # CIRCLED IDEOGRAPH ALLIANCE
+<Multi_key> <parenleft> <U591c> <parenright> : "㊰" U32B0 # CIRCLED IDEOGRAPH NIGHT
+<Multi_key> <parenleft> <3> <6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <3> <KP_6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <KP_3> <6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <KP_3> <KP_6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <3> <7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <3> <KP_7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <KP_3> <7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <KP_3> <KP_7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <3> <8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <3> <KP_8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <KP_3> <8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <KP_3> <KP_8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <3> <9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <3> <KP_9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <KP_3> <9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <KP_3> <KP_9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <4> <0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <4> <KP_0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <KP_4> <0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <KP_4> <KP_0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <4> <1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <4> <KP_1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <KP_4> <1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <KP_4> <KP_1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <4> <2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <4> <KP_Space> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <4> <KP_2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <KP_4> <2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <KP_4> <KP_Space> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <KP_4> <KP_2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <4> <3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <4> <KP_3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <KP_4> <3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <KP_4> <KP_3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <4> <4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <4> <KP_4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <KP_4> <4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <KP_4> <KP_4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <4> <5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <4> <KP_5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <KP_4> <5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <KP_4> <KP_5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <4> <6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <4> <KP_6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <KP_4> <6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <KP_4> <KP_6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <4> <7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <4> <KP_7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <KP_4> <7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <KP_4> <KP_7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <4> <8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <4> <KP_8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <KP_4> <8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <KP_4> <KP_8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <4> <9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <4> <KP_9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <KP_4> <9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <KP_4> <KP_9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <5> <0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <5> <KP_0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <KP_5> <0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <KP_5> <KP_0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <kana_A> <parenright> : "ã‹" U32D0 # CIRCLED KATAKANA A
+<Multi_key> <parenleft> <kana_I> <parenright> : "ã‹‘" U32D1 # CIRCLED KATAKANA I
+<Multi_key> <parenleft> <kana_U> <parenright> : "ã‹’" U32D2 # CIRCLED KATAKANA U
+<Multi_key> <parenleft> <kana_E> <parenright> : "ã‹“" U32D3 # CIRCLED KATAKANA E
+<Multi_key> <parenleft> <kana_O> <parenright> : "ã‹”" U32D4 # CIRCLED KATAKANA O
+<Multi_key> <parenleft> <kana_KA> <parenright> : "ã‹•" U32D5 # CIRCLED KATAKANA KA
+<Multi_key> <parenleft> <kana_KI> <parenright> : "ã‹–" U32D6 # CIRCLED KATAKANA KI
+<Multi_key> <parenleft> <kana_KU> <parenright> : "ã‹—" U32D7 # CIRCLED KATAKANA KU
+<Multi_key> <parenleft> <kana_KE> <parenright> : "㋘" U32D8 # CIRCLED KATAKANA KE
+<Multi_key> <parenleft> <kana_KO> <parenright> : "ã‹™" U32D9 # CIRCLED KATAKANA KO
+<Multi_key> <parenleft> <kana_SA> <parenright> : "ã‹š" U32DA # CIRCLED KATAKANA SA
+<Multi_key> <parenleft> <kana_SHI> <parenright> : "ã‹›" U32DB # CIRCLED KATAKANA SI
+<Multi_key> <parenleft> <kana_SU> <parenright> : "㋜" U32DC # CIRCLED KATAKANA SU
+<Multi_key> <parenleft> <kana_SE> <parenright> : "ã‹" U32DD # CIRCLED KATAKANA SE
+<Multi_key> <parenleft> <kana_SO> <parenright> : "ã‹ž" U32DE # CIRCLED KATAKANA SO
+<Multi_key> <parenleft> <kana_TA> <parenright> : "ã‹Ÿ" U32DF # CIRCLED KATAKANA TA
+<Multi_key> <parenleft> <kana_CHI> <parenright> : "ã‹ " U32E0 # CIRCLED KATAKANA TI
+<Multi_key> <parenleft> <kana_TSU> <parenright> : "ã‹¡" U32E1 # CIRCLED KATAKANA TU
+<Multi_key> <parenleft> <kana_TE> <parenright> : "ã‹¢" U32E2 # CIRCLED KATAKANA TE
+<Multi_key> <parenleft> <kana_TO> <parenright> : "ã‹£" U32E3 # CIRCLED KATAKANA TO
+<Multi_key> <parenleft> <kana_NA> <parenright> : "㋤" U32E4 # CIRCLED KATAKANA NA
+<Multi_key> <parenleft> <kana_NI> <parenright> : "ã‹¥" U32E5 # CIRCLED KATAKANA NI
+<Multi_key> <parenleft> <kana_NU> <parenright> : "㋦" U32E6 # CIRCLED KATAKANA NU
+<Multi_key> <parenleft> <kana_NE> <parenright> : "㋧" U32E7 # CIRCLED KATAKANA NE
+<Multi_key> <parenleft> <kana_NO> <parenright> : "㋨" U32E8 # CIRCLED KATAKANA NO
+<Multi_key> <parenleft> <kana_HA> <parenright> : "ã‹©" U32E9 # CIRCLED KATAKANA HA
+<Multi_key> <parenleft> <kana_HI> <parenright> : "㋪" U32EA # CIRCLED KATAKANA HI
+<Multi_key> <parenleft> <kana_FU> <parenright> : "ã‹«" U32EB # CIRCLED KATAKANA HU
+<Multi_key> <parenleft> <kana_HE> <parenright> : "㋬" U32EC # CIRCLED KATAKANA HE
+<Multi_key> <parenleft> <kana_HO> <parenright> : "ã‹­" U32ED # CIRCLED KATAKANA HO
+<Multi_key> <parenleft> <kana_MA> <parenright> : "ã‹®" U32EE # CIRCLED KATAKANA MA
+<Multi_key> <parenleft> <kana_MI> <parenright> : "㋯" U32EF # CIRCLED KATAKANA MI
+<Multi_key> <parenleft> <kana_MU> <parenright> : "ã‹°" U32F0 # CIRCLED KATAKANA MU
+<Multi_key> <parenleft> <kana_ME> <parenright> : "㋱" U32F1 # CIRCLED KATAKANA ME
+<Multi_key> <parenleft> <kana_MO> <parenright> : "㋲" U32F2 # CIRCLED KATAKANA MO
+<Multi_key> <parenleft> <kana_YA> <parenright> : "㋳" U32F3 # CIRCLED KATAKANA YA
+<Multi_key> <parenleft> <kana_YU> <parenright> : "ã‹´" U32F4 # CIRCLED KATAKANA YU
+<Multi_key> <parenleft> <kana_YO> <parenright> : "㋵" U32F5 # CIRCLED KATAKANA YO
+<Multi_key> <parenleft> <kana_RA> <parenright> : "㋶" U32F6 # CIRCLED KATAKANA RA
+<Multi_key> <parenleft> <kana_RI> <parenright> : "ã‹·" U32F7 # CIRCLED KATAKANA RI
+<Multi_key> <parenleft> <kana_RU> <parenright> : "㋸" U32F8 # CIRCLED KATAKANA RU
+<Multi_key> <parenleft> <kana_RE> <parenright> : "㋹" U32F9 # CIRCLED KATAKANA RE
+<Multi_key> <parenleft> <kana_RO> <parenright> : "㋺" U32FA # CIRCLED KATAKANA RO
+<Multi_key> <parenleft> <kana_WA> <parenright> : "ã‹»" U32FB # CIRCLED KATAKANA WA
+<Multi_key> <parenleft> <U30f0> <parenright> : "㋼" U32FC # CIRCLED KATAKANA WI
+<Multi_key> <parenleft> <U30f1> <parenright> : "㋽" U32FD # CIRCLED KATAKANA WE
+<Multi_key> <parenleft> <kana_WO> <parenright> : "㋾" U32FE # CIRCLED KATAKANA WO
+<Multi_key> <U05b4> <hebrew_yod> : "ï¬" UFB1D # HEBREW LETTER YOD WITH HIRIQ
+<Multi_key> <U05b7> <U05f2> : "ײַ" UFB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+<Multi_key> <U05c1> <hebrew_shin> : "שׁ" UFB2A # HEBREW LETTER SHIN WITH SHIN DOT
+<Multi_key> <U05c2> <hebrew_shin> : "שׂ" UFB2B # HEBREW LETTER SHIN WITH SIN DOT
+<Multi_key> <U05c1> <Ufb49> : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+<Multi_key> <U05c1> <U05bc> <hebrew_shin> : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+<Multi_key> <U05c2> <Ufb49> : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+<Multi_key> <U05c2> <U05bc> <hebrew_shin> : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+<Multi_key> <U05b7> <hebrew_aleph> : "אַ" UFB2E # HEBREW LETTER ALEF WITH PATAH
+<Multi_key> <U05b8> <hebrew_aleph> : "אָ" UFB2F # HEBREW LETTER ALEF WITH QAMATS
+<Multi_key> <U05bc> <hebrew_aleph> : "אּ" UFB30 # HEBREW LETTER ALEF WITH MAPIQ
+<Multi_key> <U05bc> <hebrew_bet> : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_beth> : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_gimel> : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH
+<Multi_key> <U05bc> <hebrew_gimmel> : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH
+<Multi_key> <U05bc> <hebrew_dalet> : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_daleth> : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_he> : "הּ" UFB34 # HEBREW LETTER HE WITH MAPIQ
+<Multi_key> <U05bc> <hebrew_waw> : "וּ" UFB35 # HEBREW LETTER VAV WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zain> : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zayin> : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_tet> : "טּ" UFB38 # HEBREW LETTER TET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_teth> : "טּ" UFB38 # HEBREW LETTER TET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_yod> : "יּ" UFB39 # HEBREW LETTER YOD WITH DAGESH
+<Multi_key> <U05bc> <hebrew_finalkaph> : "ךּ" UFB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_kaph> : "כּ" UFB3B # HEBREW LETTER KAF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_lamed> : "לּ" UFB3C # HEBREW LETTER LAMED WITH DAGESH
+<Multi_key> <U05bc> <hebrew_mem> : "מּ" UFB3E # HEBREW LETTER MEM WITH DAGESH
+<Multi_key> <U05bc> <hebrew_nun> : "ï­€" UFB40 # HEBREW LETTER NUN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_samech> : "ï­" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH
+<Multi_key> <U05bc> <hebrew_samekh> : "ï­" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH
+<Multi_key> <U05bc> <hebrew_finalpe> : "ï­ƒ" UFB43 # HEBREW LETTER FINAL PE WITH DAGESH
+<Multi_key> <U05bc> <hebrew_pe> : "ï­„" UFB44 # HEBREW LETTER PE WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zade> : "ï­†" UFB46 # HEBREW LETTER TSADI WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zadi> : "ï­†" UFB46 # HEBREW LETTER TSADI WITH DAGESH
+<Multi_key> <U05bc> <hebrew_kuf> : "ï­‡" UFB47 # HEBREW LETTER QOF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_qoph> : "ï­‡" UFB47 # HEBREW LETTER QOF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_resh> : "ï­ˆ" UFB48 # HEBREW LETTER RESH WITH DAGESH
+<Multi_key> <U05bc> <hebrew_shin> : "ï­‰" UFB49 # HEBREW LETTER SHIN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_taf> : "ï­Š" UFB4A # HEBREW LETTER TAV WITH DAGESH
+<Multi_key> <U05bc> <hebrew_taw> : "ï­Š" UFB4A # HEBREW LETTER TAV WITH DAGESH
+<Multi_key> <U05b9> <hebrew_waw> : "ï­‹" UFB4B # HEBREW LETTER VAV WITH HOLAM
+<Multi_key> <U05bf> <hebrew_bet> : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE
+<Multi_key> <U05bf> <hebrew_beth> : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE
+<Multi_key> <U05bf> <hebrew_kaph> : "ï­" UFB4D # HEBREW LETTER KAF WITH RAFE
+<Multi_key> <U05bf> <hebrew_pe> : "ï­Ž" UFB4E # HEBREW LETTER PE WITH RAFE
+<Multi_key> <U1d157> <U1d165> : "í…ž" U1D15E # MUSICAL SYMBOL HALF NOTE
+<Multi_key> <U1d158> <U1d165> : "í…Ÿ" U1D15F # MUSICAL SYMBOL QUARTER NOTE
+<Multi_key> <U1d15f> <U1d16e> : "í… " U1D160 # MUSICAL SYMBOL EIGHTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d16e> : "í… " U1D160 # MUSICAL SYMBOL EIGHTH NOTE
+<Multi_key> <U1d15f> <U1d16f> : "í…¡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d16f> : "í…¡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+<Multi_key> <U1d15f> <U1d170> : "í…¢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+<Multi_key> <U1d158> <U1d165> <U1d170> : "í…¢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+<Multi_key> <U1d15f> <U1d171> : "í…£" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d171> : "í…£" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+<Multi_key> <U1d15f> <U1d172> : "í…¤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d172> : "í…¤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+<Multi_key> <U1d1b9> <U1d165> : "톻" U1D1BB # MUSICAL SYMBOL MINIMA
+<Multi_key> <U1d1ba> <U1d165> : "톼" U1D1BC # MUSICAL SYMBOL MINIMA BLACK
+<Multi_key> <U1d1bb> <U1d16e> : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+<Multi_key> <U1d1b9> <U1d165> <U1d16e> : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+<Multi_key> <U1d1bc> <U1d16e> : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+<Multi_key> <U1d1ba> <U1d165> <U1d16e> : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+<Multi_key> <U1d1bb> <U1d16f> : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE
+<Multi_key> <U1d1b9> <U1d165> <U1d16f> : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE
+<Multi_key> <U1d1bc> <U1d16f> : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK
+<Multi_key> <U1d1ba> <U1d165> <U1d16f> : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK
diff --git a/nls/en_US.UTF-8/XI18N_OBJS b/nls/en_US.UTF-8/XI18N_OBJS
index da1a9587..8455c6c2 100644
--- a/nls/en_US.UTF-8/XI18N_OBJS
+++ b/nls/en_US.UTF-8/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for en_US.UTF-8 locale
#
-XLC common/xlcUTF-8 _XlcUnicodeLoader # XLC_open
-XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
-XIM common/xiiimp _SwitchOpenIM # XIM_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/en_US.UTF-8/XLC_LOCALE.pre b/nls/en_US.UTF-8/XLC_LOCALE.pre
index d1e7e2c2..9919a8d2 100644
--- a/nls/en_US.UTF-8/XLC_LOCALE.pre
+++ b/nls/en_US.UTF-8/XLC_LOCALE.pre
@@ -1,365 +1,142 @@
-XCOMM
-XCOMM Copyright (c) 1996-1998 by Sun Microsystems, Inc.
-XCOMM All rights reserved.
-XCOMM
-#ident "@(#)en_US.UTF-8 1.26 98/11/17 SMI"
+XCOMM $XFree86: xc/nls/XLC_LOCALE/en_US.UTF-8,v 1.3 2000/12/01 17:43:02 dawes Exp $
+XCOMM XLocale Database Sample for en_US.UTF-8
+XCOMM
+
XCOMM
XCOMM XLC_FONTSET category
XCOMM
XLC_FONTSET
-XCOMM fs0 class
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class
fs0 {
- charset ISO8859-1:GL
- font {
- primary ISO8859-1:GL
+ charset {
+ name ISO10646-1
}
-}
-
-XCOMM fs1 class
-fs1 {
- charset ISO8859-1:GR
- font {
- primary ISO8859-1:GR
+ font {
+ primary ISO10646-1
}
}
-
-XCOMM fs2 class
-fs2 {
- charset ISO8859-5:GR
- font {
- load_option delay_nocheck
- primary ISO8859-5:GR
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs1 class (7 bit ASCII)
+fs1 {
+ charset {
+ name ISO8859-1:GL
}
-}
-XCOMM fs3 class
-fs3 {
- charset ISO8859-7:GR
- font {
- load_option delay_nocheck
- primary ISO8859-7:GR
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
}
}
-
-XCOMM fs4 class
-fs4 {
- charset ISO8859-2:GR
- font {
- load_option delay_nocheck
- primary ISO8859-2:GR
+XCOMM fs2 class (ISO8859 families)
+fs2 {
+ charset {
+ name ISO8859-1:GR
}
-}
-
-XCOMM fs5 class
-fs5 {
- charset ISO8859-4:GR
- font {
- load_option delay_nocheck
- primary ISO8859-4:GR
+ font {
+ primary ISO8859-1:GR
}
}
-
-XCOMM fs6 class
-fs6 {
- charset ISO8859-9:GR
- font {
- load_option delay_nocheck
- primary ISO8859-9:GR
+XCOMM fs3 class (Kanji)
+fs3 {
+ charset {
+ name JISX0208.1983-0:GL
}
-}
-
-XCOMM fs7 class
-fs7 {
- charset ISO8859-15:GR
- font {
- load_option delay_nocheck
- primary ISO8859-15:GR
+ font {
+ primary JISX0208.1983-0:GL
}
}
-
-XCOMM fs8 class for JISX0208
-fs8 {
- charset JISX0208.1983-0:GR
- font {
- load_option delay_nocheck
- primary JISX0208.1983-0:GL
+XCOMM fs4 class (Korean Character)
+fs4 {
+ charset {
+ name KSC5601.1987-0:GL
}
-}
-
-XCOMM fs9 class for JISX0201 kana
-fs9 {
- charset JISX0201.1976-0:GR
- font {
- load_option delay_nocheck
- primary JISX0201.1976-0:GR
+ font {
+ primary KSC5601.1987-0:GL
}
}
-
-XCOMM fs10 calss for KS C 5601-1992 Supplementary Codes 3
-fs10 {
- charset KSC5601.1992-3:GLGR
- font {
- primary KSC5601.1992-3:GLGR
- }
-}
-
-XCOMM fs11 class
-fs11 {
- charset GB2312.1980-0:GR
- font {
- load_option delay_nocheck
- primary GB2312.1980-0:GL
- }
-}
-
-XCOMM fs12 class
-fs12 {
- charset BIG5-1:GLGR
- font {
- load_option delay_nocheck
- primary BIG5-1:GLGR
- }
-}
-
-XCOMM fs13 class (Thai)
-fs13 {
- charset TIS620.2533-0:GR
- font {
- primary TIS620.2533-0:GR
+XCOMM fs5 class (Chinese Han Character)
+fs5 {
+ charset {
+ name GB2312.1980-0:GL
}
-}
-
-XCOMM fs14 class (ISO8859-6) (Arabic)
-fs14 {
- charset ISO8859-6:GLGR
- font {
- primary ISO8859-6:GLGR
+ font {
+ primary GB2312.1980-0:GL
}
}
-
-XCOMM fs15 class (ISO8859-8) (Hebrew)
-fs15 {
- charset ISO8859-8:GR
- font {
- primary ISO8859-8:GR
+XCOMM fs6 class (Half Kana)
+fs6 {
+ charset {
+ name JISX0201.1976-0:GR
}
-}
-
-XCOMM fs16 (Last, fallback) class (unicode-fontspecific)
-fs16 {
- charset UNICODE-FONTSPECIFIC:GLGR
- font {
- load_option delay_nocheck
- primary UNICODE-FONTSPECIFIC:GLGR
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
}
}
-
END XLC_FONTSET
-
XCOMM
XCOMM XLC_XLOCALE category
XCOMM
XLC_XLOCALE
-encoding_name en_US.UTF-8
-mb_cur_max 8
+encoding_name UTF-8
+mb_cur_max 6
state_depend_encoding False
-mb_encoding_name UTF-8
-wc_encoding_name UCS-4
-wc_valid_length 2
-wc_conversion_table conv_tables/UCS_TO_CS
-
-
-XCOMM cs0 class
+XCOMM cs0 class
cs0 {
side GL:Default
length 1
ct_encoding ISO8859-1:GL
- byte1 \x00,\x7f
- cs_range \x00,\x7f
- cs_conversion [\x00,\x7f]->\x00
- cs_conversion_table conv_tables/ISO8859-1.GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
- byte1 \x80,\xff
- cs_range \x80,\xff
- cs_conversion [\x80,\xff]->\x80
- cs_conversion_table conv_tables/ISO8859-1.GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR:Default
- length 1
- ct_encoding ISO8859-5:GR
- byte1 \xa0,\xff
- cs_range \xa0,\xff
- cs_conversion_file conv_tables/ISO8859-5.GR.txt
- cs_conversion_table conv_tables/ISO8859-5.GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GR:Default
- length 1
- ct_encoding ISO8859-7:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/ISO8859-7.GR.txt
- cs_conversion_table conv_tables/ISO8859-7.GR
-}
-
-XCOMM cs4 class
-cs4 {
- side GR:Default
- length 1
- ct_encoding ISO8859-2:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/ISO8859-2.GR.txt
- cs_conversion_table conv_tables/ISO8859-2.GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR:Default
- length 1
- ct_encoding ISO8859-4:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/ISO8859-4.GR.txt
- cs_conversion_table conv_tables/ISO8859-4.GR
-}
-
-XCOMM cs6 class
-cs6 {
- side GR:Default
- length 1
- ct_encoding ISO8859-9:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/ISO8859-9.GR.txt
- cs_conversion_table conv_tables/ISO8859-9.GR
-}
-
-XCOMM cs7 class
-cs7 {
- side GR:Default
- length 1
- ct_encoding ISO8859-15:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/ISO8859-15.GR.txt
- cs_conversion_table conv_tables/ISO8859-15.GR
-}
-
-XCOMM cs8 class
-cs8 {
- side GR:Default
- length 2
- ct_encoding JISX0208.1983-0:GR;
- byte1 \xa1,\xfe
- byte2 \xa1,\xfe
- cs_conversion_file conv_tables/JISX0208-0.GR.txt
- cs_conversion_table conv_tables/JISX0208-0.GR
}
-XCOMM cs9 class
-cs9 {
+XCOMM cs1 class
+cs1 {
side GR:Default
length 1
- ct_encoding JISX0201.1976-0:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/JISX0201-0.GR.txt
- cs_conversion_table conv_tables/JISX0201-0.GR
-}
-
-XCOMM cs10 class
-cs10 {
- side GR:Default
- length 2
- ct_encoding KSC5601.1992-3:GLGR
- byte1 \x88,\xf9
- byte2 \x31,\xfe
- cs_conversion_file conv_tables/KSC-JOHAP.GLGR.txt
- cs_conversion_table conv_tables/KSC-JOHAP.GLGR
-
+ ct_encoding ISO8859-1:GR
}
-
-XCOMM cs11 class
-cs11 {
- side GR:Default
+
+XCOMM cs2 class
+cs2 {
+ side GR
length 2
- ct_encoding GB2312.1980-0:GR
- byte1 \xa1,\xfe
- byte2 \xa1,\xfe
- cs_conversion_file conv_tables/GB2312-0.GR.txt
- cs_conversion_table conv_tables/GB2312-0.GR
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
}
-XCOMM cs12 class
-cs12 {
- side GR:Default
+XCOMM cs3 class
+cs3 {
+ side GL
length 2
- ct_encoding BIG5-1:GLGR
- byte1 \xa1,\xf9
- byte2 \x31,\xfe
- cs_conversion_file conv_tables/BIG5-1.GLGR.txt
- cs_conversion_table conv_tables/BIG5-1.GLGR
-
-}
-
-XCOMM cs13 class
-cs13 {
- side GR:Default
- length 1
- ct_encoding TIS620.2533-0:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/TIS620.2533-0.GR.txt
- cs_conversion_table conv_tables/TIS620.2533-0.GR
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
+ KSC5601.1987-1:GL; KSC5601.1987-1:GR
}
-
-XCOMM cs14 class
-cs14 {
- side GR:Default
- length 2
- ct_encoding ISO8859-6:GLGR
- byte1 \x00,\xff
- byte2 \x00,\xff
- cs_conversion_file conv_tables/ISO8859-6.GLGR.txt
- cs_conversion_table conv_tables/ISO8859-6.GLGR
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
}
-
-XCOMM cs15 class
-cs15 {
- side GR:Default
+
+XCOMM cs5 class
+cs5 {
+ side GR
length 1
- ct_encoding ISO8859-8:GR
- byte1 \xa0,\xfe
- cs_range \xa0,\xfe
- cs_conversion_file conv_tables/ISO8859-8.GR.txt
- cs_conversion_table conv_tables/ISO8859-8.GR
+ ct_encoding JISX0201.1976-0:GR
}
-XCOMM Last, fallback class
-cs16 {
- side GR:Default
- length 2
- ct_encoding UNICODE-FONTSPECIFIC:GLGR
- byte1 \x00,\xff
- byte2 \x00,\xff
- cs_conversion [\x0000,\xffff]->\x0000
- cs_conversion_table conv_tables/UNICODE-FONTSPECIFIC.GLGR
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
}
END XLC_XLOCALE
diff --git a/nls/georgian-academy/Compose.pre b/nls/georgian-academy/Compose.pre
new file mode 100644
index 00000000..707901f6
--- /dev/null
+++ b/nls/georgian-academy/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM georgian-academy Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/georgian-academy,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/georgian-academy/XI18N_OBJS b/nls/georgian-academy/XI18N_OBJS
new file mode 100644
index 00000000..c4f7ffa1
--- /dev/null
+++ b/nls/georgian-academy/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for georgian-academy locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/georgian-academy/XLC_LOCALE.pre b/nls/georgian-academy/XLC_LOCALE.pre
new file mode 100644
index 00000000..37adcb78
--- /dev/null
+++ b/nls/georgian-academy/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/georgian-academy,v 1.2 2000/12/01 17:43:02 dawes Exp $
+XCOMM XLocale Database Sample for georgian-academy
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary GEORGIAN-ACADEMY:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset GEORGIAN-ACADEMY:GR
+ font GEORGIAN-ACADEMY:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name GEORGIAN-ACADEMY
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GEORGIAN-ACADEMY
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding GEORGIAN-ACADEMY:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding GEORGIAN-ACADEMY:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/georgian-ps/Compose.pre b/nls/georgian-ps/Compose.pre
new file mode 100644
index 00000000..553d6a3d
--- /dev/null
+++ b/nls/georgian-ps/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM georgian-ps Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/georgian-ps,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/georgian-ps/XI18N_OBJS b/nls/georgian-ps/XI18N_OBJS
new file mode 100644
index 00000000..558452d9
--- /dev/null
+++ b/nls/georgian-ps/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for georgian-ps locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/georgian-ps/XLC_LOCALE.pre b/nls/georgian-ps/XLC_LOCALE.pre
new file mode 100644
index 00000000..49f449bf
--- /dev/null
+++ b/nls/georgian-ps/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/georgian-ps,v 1.2 2000/12/01 17:43:02 dawes Exp $
+XCOMM XLocale Database Sample for georgian-ps
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary GEORGIAN-PS:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset GEORGIAN-PS:GR
+ font GEORGIAN-PS:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name GEORGIAN-PS
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GEORGIAN-PS
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding GEORGIAN-PS:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding GEORGIAN-PS:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/ibm-cp1133/Compose.pre b/nls/ibm-cp1133/Compose.pre
new file mode 100644
index 00000000..6b2009e0
--- /dev/null
+++ b/nls/ibm-cp1133/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ibm-cp1133 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/ibm-cp1133,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/ibm-cp1133/XI18N_OBJS b/nls/ibm-cp1133/XI18N_OBJS
new file mode 100644
index 00000000..02ca83b1
--- /dev/null
+++ b/nls/ibm-cp1133/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ibm-cp1133 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ibm-cp1133/XLC_LOCALE.pre b/nls/ibm-cp1133/XLC_LOCALE.pre
new file mode 100644
index 00000000..e08fbb1b
--- /dev/null
+++ b/nls/ibm-cp1133/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ibm-cp1133,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for ibm-cp1133.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary IBM-CP1133:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset IBM-CP1133:GR
+ font IBM-CP1133:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name IBM-CP1133
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name IBM-CP1133
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding IBM-CP1133:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding IBM-CP1133:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/iscii-dev/XI18N_OBJS b/nls/iscii-dev/XI18N_OBJS
new file mode 100644
index 00000000..0dbaed51
--- /dev/null
+++ b/nls/iscii-dev/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iscii-dev locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iscii-dev/XLC_LOCALE.pre b/nls/iscii-dev/XLC_LOCALE.pre
new file mode 100644
index 00000000..9910e713
--- /dev/null
+++ b/nls/iscii-dev/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/iscii-dev,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISCII-DEV:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ISCII-DEV:GR
+ font ISCII-DEV:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISCII-DEV
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISCII-DEV
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISCII-DEV:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISCII-DEV:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/isiri-3342/XI18N_OBJS b/nls/isiri-3342/XI18N_OBJS
new file mode 100644
index 00000000..028d8471
--- /dev/null
+++ b/nls/isiri-3342/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for isiri-3342 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/isiri-3342/XLC_LOCALE.pre b/nls/isiri-3342/XLC_LOCALE.pre
new file mode 100644
index 00000000..d76a0359
--- /dev/null
+++ b/nls/isiri-3342/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/isiri-3342,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISIRI-3342:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ISIRI-3342:GR
+ font ISIRI-3342:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISIRI-3342
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISIRI-3342
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISIRI-3342:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISIRI-3342:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/iso8859-1/Compose.pre b/nls/iso8859-1/Compose.pre
index 63038ca0..92135835 100644
--- a/nls/iso8859-1/Compose.pre
+++ b/nls/iso8859-1/Compose.pre
@@ -1,15 +1,18 @@
-# $Xorg: iso8859-1,v 1.3 2000/08/17 19:46:59 cpqbld Exp $
-#
-# ISO 8859-1 (Latin1) Compose Sequence
-#
-# Sequence Definition
-#
-# <Multi_key> Means <Compose>
-# Special Character
+XCOMM $Xorg: iso8859-1,v 1.3 2000/08/17 19:46:59 cpqbld Exp $
+XCOMM
+XCOMM ISO 8859-1 (Latin1) Compose Sequence
+XCOMM
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-1,v 1.9 2002/10/10 01:22:28 dawes Exp $
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
<Multi_key> <plus> <plus> : "#" numbersign
<Multi_key> <apostrophe> <space> : "'" apostrophe
<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <A> : "@" at
+<Multi_key> <A> <T> : "@" at
<Multi_key> <parenleft> <parenleft> : "[" bracketleft
<Multi_key> <slash> <slash> : "\\" backslash
<Multi_key> <slash> <less> : "\\" backslash
@@ -17,8 +20,8 @@
<Multi_key> <parenright> <parenright> : "]" bracketright
<Multi_key> <asciicircum> <space> : "^" asciicircum
<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicirum
-<Multi_key> <space> <greater> : "^" asciicirum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
<Multi_key> <grave> <space> : "`" grave
<Multi_key> <space> <grave> : "`" grave
<Multi_key> <parenleft> <minus> : "{" braceleft
@@ -96,6 +99,7 @@
<Multi_key> <0> <c> : "\251" copyright
<Multi_key> <C> <0> : "\251" copyright
<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
<Multi_key> <a> <underscore> : "\252" ordfeminine
<Multi_key> <underscore> <a> : "\252" ordfeminine
<Multi_key> <A> <underscore> : "\252" ordfeminine
@@ -158,6 +162,7 @@
<Multi_key> <minus> <minus> : "\255" hyphen
<Multi_key> <R> <O> : "\256" registered
<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
<Multi_key> <minus> <asciicircum> : "\257" macron
<Multi_key> <asciicircum> <minus> : "\257" macron
<Multi_key> <underscore> <asciicircum> : "\257" macron
@@ -169,7 +174,7 @@
<Multi_key> <apostrophe> <apostrophe> : "\264" acute
<Multi_key> <comma> <comma> : "\270" cedilla
<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-# Accented Alphabet
+XCOMM Accented Alphabet
<Multi_key> <A> <grave> : "\300" Agrave
<Multi_key> <grave> <A> : "\300" Agrave
<Multi_key> <A> <acute> : "\301" Aacute
@@ -190,6 +195,8 @@
<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
<Multi_key> <A> <asterisk> : "\305" Aring
<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
<Multi_key> <A> <E> : "\306" AE
<Multi_key> <a> <grave> : "\340" agrave
<Multi_key> <grave> <a> : "\340" agrave
@@ -211,7 +218,11 @@
<Multi_key> <diaeresis> <a> : "\344" adiaeresis
<Multi_key> <a> <asterisk> : "\345" aring
<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <acute> <C> : "\307" Ccedilla
+<Multi_key> <acute> <c> : "\347" ccedilla
<Multi_key> <C> <comma> : "\307" Ccedilla
<Multi_key> <comma> <C> : "\307" Ccedilla
<Multi_key> <c> <comma> : "\347" ccedilla
@@ -367,18 +378,25 @@
<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-#
-#
-# dead key accent keysyms
-# Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
+XCOMM
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
<dead_circumflex> <space> : "^" asciicircum
+<dead_circumflex> <dead_circumflex> : "^" asciicircum
<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
<dead_grave> <space> : "`" grave
+<dead_grave> <dead_grave> : "`" grave
+XCOMM These are for us_intl, that does not have diaeresis, etc
<dead_acute> <space> : "'" apostrophe
+<dead_acute> <dead_acute> : "\264" acute
+<dead_diaeresis> <space> : "\"" quotedbl
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <dead_abovering> : "\260" degree
<dead_circumflex> <0> : "\260" degree
<dead_circumflex> <1> : "\271" onesuperior
<dead_circumflex> <2> : "\262" twosuperior
@@ -391,12 +409,14 @@
<dead_acute> <apostrophe> : "\264" acute
<dead_cedilla> <comma> : "\270" cedilla
<dead_diaeresis> <quotedbl> : "\250" diaeresis
-# Accented Alphabet
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
<dead_grave> <A> : "\300" Agrave
<dead_acute> <A> : "\301" Aacute
<dead_circumflex> <A> : "\302" Acircumflex
<dead_tilde> <A> : "\303" Atilde
<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_abovering> <a> : "\345" aring
<dead_grave> <a> : "\340" agrave
<dead_acute> <a> : "\341" aacute
<dead_circumflex> <a> : "\342" acircumflex
@@ -435,17 +455,23 @@
<dead_grave> <U> : "\331" Ugrave
<dead_acute> <U> : "\332" Uacute
<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_doubleacute> <U> : "\334" Udiaeresis
<dead_diaeresis> <U> : "\334" Udiaeresis
<dead_grave> <u> : "\371" ugrave
<dead_acute> <u> : "\372" uacute
<dead_circumflex> <u> : "\373" ucircumflex
+<dead_doubleacute> <u> : "\374" udiaeresis
<dead_diaeresis> <u> : "\374" udiaeresis
<dead_acute> <Y> : "\335" Yacute
<dead_acute> <y> : "\375" yacute
<dead_diaeresis> <y> : "\377" ydiaeresis
-#
-# Ctrl<T> Means <Compose>
-# Special Character
+XCOMM Useful for portuguese language
+<dead_acute> <C> : "\307" Ccedilla
+<dead_acute> <c> : "\347" ccedilla
+XCOMM
+#ifdef USE_CTRL_SHIFT_T_SEQS
+XCOMM Ctrl<T> Means <Compose>
+XCOMM Special Character
Ctrl<T> <plus> <plus> : "#" numbersign
Ctrl<T> <apostrophe> <space> : "'" apostrophe
Ctrl<T> <space> <apostrophe> : "'" apostrophe
@@ -457,8 +483,8 @@ Ctrl<T> <less> <slash> : "\\" backslash
Ctrl<T> <parenright> <parenright> : "]" bracketright
Ctrl<T> <asciicircum> <space> : "^" asciicircum
Ctrl<T> <space> <asciicircum> : "^" asciicircum
-Ctrl<T> <greater> <space> : "^" asciicirum
-Ctrl<T> <space> <greater> : "^" asciicirum
+Ctrl<T> <greater> <space> : "^" asciicircum
+Ctrl<T> <space> <greater> : "^" asciicircum
Ctrl<T> <grave> <space> : "`" grave
Ctrl<T> <space> <grave> : "`" grave
Ctrl<T> <parenleft> <minus> : "{" braceleft
@@ -609,7 +635,7 @@ Ctrl<T> <x> <x> : "\327" multiply
Ctrl<T> <apostrophe> <apostrophe> : "\264" acute
Ctrl<T> <comma> <comma> : "\270" cedilla
Ctrl<T> <quotedbl> <quotedbl> : "\250" diaeresis
-# Accented Alphabet
+XCOMM Accented Alphabet
Ctrl<T> <A> <grave> : "\300" Agrave
Ctrl<T> <grave> <A> : "\300" Agrave
Ctrl<T> <A> <acute> : "\301" Aacute
@@ -630,6 +656,8 @@ Ctrl<T> <A> <diaeresis> : "\304" Adiaeresis
Ctrl<T> <diaeresis> <A> : "\304" Adiaeresis
Ctrl<T> <A> <asterisk> : "\305" Aring
Ctrl<T> <asterisk> <A> : "\305" Aring
+Ctrl<T> <A> <A> : "\305" Aring
+Ctrl<T> <A> <O> : "\305" Aring
Ctrl<T> <A> <E> : "\306" AE
Ctrl<T> <a> <grave> : "\340" agrave
Ctrl<T> <grave> <a> : "\340" agrave
@@ -651,6 +679,8 @@ Ctrl<T> <a> <diaeresis> : "\344" adiaeresis
Ctrl<T> <diaeresis> <a> : "\344" adiaeresis
Ctrl<T> <a> <asterisk> : "\345" aring
Ctrl<T> <asterisk> <a> : "\345" aring
+Ctrl<T> <a> <a> : "\345" aring
+Ctrl<T> <a> <o> : "\345" aring
Ctrl<T> <a> <e> : "\346" ae
Ctrl<T> <C> <comma> : "\307" Ccedilla
Ctrl<T> <comma> <C> : "\307" Ccedilla
@@ -807,4 +837,5 @@ Ctrl<T> <y> <quotedbl> : "\377" ydiaeresis
Ctrl<T> <quotedbl> <y> : "\377" ydiaeresis
Ctrl<T> <y> <diaeresis> : "\377" ydiaeresis
Ctrl<T> <diaeresis> <y> : "\377" ydiaeresis
-# End of Sequence Definition
+#endif /* USE_CTRL_SHIFT_T_SEQS */
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-1/XI18N_OBJS b/nls/iso8859-1/XI18N_OBJS
index 32e4f358..595977ab 100644
--- a/nls/iso8859-1/XI18N_OBJS
+++ b/nls/iso8859-1/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for iso8859-1 locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/iso8859-10/Compose.pre b/nls/iso8859-10/Compose.pre
new file mode 100644
index 00000000..ec3b2e8a
--- /dev/null
+++ b/nls/iso8859-10/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ISO 8859-10 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-10,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-10/XI18N_OBJS b/nls/iso8859-10/XI18N_OBJS
new file mode 100644
index 00000000..7e3b8549
--- /dev/null
+++ b/nls/iso8859-10/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-10 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-11/XI18N_OBJS b/nls/iso8859-11/XI18N_OBJS
new file mode 100644
index 00000000..fa240362
--- /dev/null
+++ b/nls/iso8859-11/XI18N_OBJS
@@ -0,0 +1,9 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-11 locale
+#
+# $XFree86: xc/nls/XI18N_OBJS/iso8859-11,v 1.1 2002/10/08 23:31:41 dawes Exp $
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-11/XLC_LOCALE.pre b/nls/iso8859-11/XLC_LOCALE.pre
new file mode 100644
index 00000000..3df0ef8b
--- /dev/null
+++ b/nls/iso8859-11/XLC_LOCALE.pre
@@ -0,0 +1,74 @@
+XCOMM XLocale Database Sample for iso8859-11.
+XCOMM
+XCOMM Id: xf-cvs20020709-iso8859_11locale.patch,v 1.1 2002/07/09 12:24:01 thep Exp
+XCOMM $XFree86: xc/nls/XLC_LOCALE/iso8859-11,v 1.1 2002/10/08 23:31:42 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-11:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-11:GR
+ }
+ font {
+ primary ISO8859-11:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-11
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-11:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-11:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/iso8859-13/Compose.pre b/nls/iso8859-13/Compose.pre
new file mode 100644
index 00000000..52042bc9
--- /dev/null
+++ b/nls/iso8859-13/Compose.pre
@@ -0,0 +1,433 @@
+XCOMM $XFree86: xc/nls/Compose/iso8859-13,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM ISO 8859-13 (Latin7) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <less> <apostrophe> : "`" grave
+<Multi_key> <apostrophe> <less> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <greater> <quotedbl> : "\241" rightdoublequotemark
+<Multi_key> <quotedbl> <greater> : "\241" rightdoublequotemark
+<Multi_key> <greater> <comma> : "\245" doublelowquotemark
+<Multi_key> <comma> <greater> : "\245" doublelowquotemark
+<Multi_key> <less> <quotedbl> : "\264" leftdoublequotemark
+<Multi_key> <quotedbl> <less> : "\264" leftdoublequotemark
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <apostrophe> <apostrophe> : "\377" rightsinglequotemark
+<Multi_key> <greater> <apostrophe> : "\377" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "\377" rightsinglequotemark
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <m> <u> : "\265" mu
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <1> <4> : "\274" onequarter
+<Multi_key> <1> <2> : "\275" onehalf
+<Multi_key> <3> <4> : "\276" threequarters
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <bar> <bar> : "\246" brokenbar
+<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
+<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
+<Multi_key> <V> <B> : "\246" brokenbar
+<Multi_key> <B> <V> : "\246" brokenbar
+<Multi_key> <v> <b> : "\246" brokenbar
+<Multi_key> <b> <v> : "\246" brokenbar
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+XCOMM Accented Alphabet
+<Multi_key> <A> <semicolon> : "\300" Aogonek
+<Multi_key> <semicolon> <A> : "\300" Aogonek
+<Multi_key> <A> <comma> : "\300" Aogonek
+<Multi_key> <comma> <A> : "\300" Aogonek
+<Multi_key> <R> <comma> : "\252" Rcedilla
+<Multi_key> <comma> <R> : "\252" Rcedilla
+<Multi_key> <L> <comma> : "\317" Lcedilla
+<Multi_key> <comma> <L> : "\317" Lcedilla
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <less> : "\320" Scaron
+<Multi_key> <less> <S> : "\320" Scaron
+<Multi_key> <E> <minus> : "\307" Emacron
+<Multi_key> <minus> <E> : "\307" Emacron
+<Multi_key> <E> <underscore> : "\307" Emacron
+<Multi_key> <underscore> <E> : "\307" Emacron
+<Multi_key> <G> <comma> : "\314" Gcedilla
+<Multi_key> <comma> <G> : "\314" Gcedilla
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <Z> <less> : "\336" Zcaron
+<Multi_key> <less> <Z> : "\336" Zcaron
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <a> <semicolon> : "\340" aogonek
+<Multi_key> <semicolon> <a> : "\340" aogonek
+<Multi_key> <a> <comma> : "\340" aogonek
+<Multi_key> <comma> <a> : "\340" aogonek
+<Multi_key> <r> <comma> : "\272" rcedilla
+<Multi_key> <comma> <r> : "\272" rcedilla
+<Multi_key> <l> <comma> : "\357" lcedilla
+<Multi_key> <comma> <l> : "\357" lcedilla
+<Multi_key> <s> <less> : "\360" scaron
+<Multi_key> <less> <s> : "\360" scaron
+<Multi_key> <e> <minus> : "\347" emacron
+<Multi_key> <minus> <e> : "\347" emacron
+<Multi_key> <e> <underscore> : "\347" emacron
+<Multi_key> <underscore> <e> : "\347" emacron
+<Multi_key> <g> <comma> : "\354" gcedilla
+<Multi_key> <comma> <g> : "\354" gcedilla
+<Multi_key> <z> <less> : "\376" zcaron
+<Multi_key> <less> <z> : "\376" zcaron
+<Multi_key> <A> <underscore> : "\302" Amacron
+<Multi_key> <underscore> <A> : "\302" Amacron
+<Multi_key> <A> <minus> : "\302" Amacron
+<Multi_key> <minus> <A> : "\302" Amacron
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
+<Multi_key> <A> <E> : "\257" AE
+<Multi_key> <I> <semicolon> : "\301" Iogonek
+<Multi_key> <semicolon> <I> : "\301" Iogonek
+<Multi_key> <I> <comma> : "\301" Iogonek
+<Multi_key> <comma> <I> : "\301" Iogonek
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <semicolon> : "\306" Eogonek
+<Multi_key> <semicolon> <E> : "\306" Eogonek
+<Multi_key> <E> <comma> : "\306" Eogonek
+<Multi_key> <comma> <E> : "\306" Eogonek
+<Multi_key> <E> <period> : "\313" Eabovedot
+<Multi_key> <period> <E> : "\313" Eabovedot
+<Multi_key> <I> <minus> : "\316" Imacron
+<Multi_key> <minus> <I> : "\316" Imacron
+<Multi_key> <I> <underscore> : "\316" Imacron
+<Multi_key> <underscore> <I> : "\316" Imacron
+<Multi_key> <N> <comma> : "\322" Ncedilla
+<Multi_key> <comma> <N> : "\322" Ncedilla
+<Multi_key> <O> <underscore> : "\324" Omacron
+<Multi_key> <underscore> <O> : "\324" Omacron
+<Multi_key> <O> <minus> : "\324" Omacron
+<Multi_key> <minus> <O> : "\324" Omacron
+<Multi_key> <K> <comma> : "\315" Kcedilla
+<Multi_key> <comma> <K> : "\315" Kcedilla
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <O> <slash> : "\250" Ooblique
+<Multi_key> <slash> <O> : "\250" Ooblique
+<Multi_key> <o> <slash> : "\270" oslash
+<Multi_key> <slash> <o> : "\270" oslash
+<Multi_key> <U> <semicolon> : "\330" Uogonek
+<Multi_key> <semicolon> <U> : "\330" Uogonek
+<Multi_key> <U> <comma> : "\330" Uogonek
+<Multi_key> <comma> <U> : "\330" Uogonek
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <underscore> : "\333" Umacron
+<Multi_key> <underscore> <U> : "\333" Umacron
+<Multi_key> <U> <minus> : "\333" Umacron
+<Multi_key> <minus> <U> : "\333" Umacron
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <a> <underscore> : "\342" amacron
+<Multi_key> <underscore> <a> : "\342" amacron
+<Multi_key> <a> <minus> : "\342" amacron
+<Multi_key> <minus> <a> : "\342" amacron
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
+<Multi_key> <a> <e> : "\277" ae
+<Multi_key> <i> <semicolon> : "\341" iogonek
+<Multi_key> <semicolon> <i> : "\341" iogonek
+<Multi_key> <i> <comma> : "\341" iogonek
+<Multi_key> <comma> <i> : "\341" iogonek
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <semicolon> : "\346" eogonek
+<Multi_key> <semicolon> <e> : "\346" eogonek
+<Multi_key> <e> <comma> : "\346" eogonek
+<Multi_key> <comma> <e> : "\346" eogonek
+<Multi_key> <e> <period> : "\353" eabovedot
+<Multi_key> <period> <e> : "\353" eabovedot
+<Multi_key> <i> <minus> : "\356" imacron
+<Multi_key> <minus> <i> : "\356" imacron
+<Multi_key> <i> <underscore> : "\356" imacron
+<Multi_key> <underscore> <i> : "\356" imacron
+<Multi_key> <n> <comma> : "\362" ncedilla
+<Multi_key> <comma> <n> : "\362" ncedilla
+<Multi_key> <o> <underscore> : "\364" omacron
+<Multi_key> <underscore> <o> : "\364" omacron
+<Multi_key> <o> <minus> : "\364" omacron
+<Multi_key> <minus> <o> : "\364" omacron
+<Multi_key> <k> <comma> : "\355" kcedilla
+<Multi_key> <comma> <k> : "\355" kcedilla
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\270" ooblique
+<Multi_key> <slash> <o> : "\270" ooblique
+<Multi_key> <u> <semicolon> : "\370" uogonek
+<Multi_key> <semicolon> <u> : "\370" uogonek
+<Multi_key> <u> <comma> : "\370" uogonek
+<Multi_key> <comma> <u> : "\370" uogonek
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <underscore> : "\373" umacron
+<Multi_key> <underscore> <u> : "\373" umacron
+<Multi_key> <u> <minus> : "\373" umacron
+<Multi_key> <minus> <u> : "\373" umacron
+<Multi_key> <C> <apostrophe> : "\303" Cacute
+<Multi_key> <apostrophe> <C> : "\303" Cacute
+<Multi_key> <c> <apostrophe> : "\343" cacute
+<Multi_key> <apostrophe> <c> : "\343" cacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <Z> <apostrophe> : "\312" Zacute
+<Multi_key> <apostrophe> <Z> : "\312" Zacute
+<Multi_key> <z> <apostrophe> : "\352" zacute
+<Multi_key> <apostrophe> <z> : "\352" zacute
+<Multi_key> <N> <apostrophe> : "\321" Nacute
+<Multi_key> <apostrophe> <N> : "\321" Nacute
+<Multi_key> <n> <apostrophe> : "\361" nacute
+<Multi_key> <apostrophe> <n> : "\361" nacute
+<Multi_key> <L> <minus> : "\331" Lstroke
+<Multi_key> <minus> <L> : "\331" Lstroke
+<Multi_key> <L> <slash> : "\331" Lstroke
+<Multi_key> <slash> <L> : "\331" Lstroke
+<Multi_key> <l> <minus> : "\371" lstroke
+<Multi_key> <minus> <l> : "\371" lstroke
+<Multi_key> <l> <slash> : "\371" lstroke
+<Multi_key> <slash> <l> : "\371" lstroke
+<Multi_key> <S> <apostrophe> : "\332" Sacute
+<Multi_key> <apostrophe> <S> : "\332" Sacute
+<Multi_key> <s> <apostrophe> : "\372" sacute
+<Multi_key> <apostrophe> <s> : "\372" sacute
+<Multi_key> <Z> <period> : "\335" Zabovedot
+<Multi_key> <period> <Z> : "\335" Zabovedot
+<Multi_key> <z> <period> : "\375" zabovedot
+<Multi_key> <period> <z> : "\375" zabovedot
+
+<dead_abovedot> <E> : "\313" Eabovedot
+<dead_abovedot> <e> : "\353" eabovedot
+<dead_abovedot> <Z> : "\335" Zabovedot
+<dead_abovedot> <z> : "\375" zabovedot
+<dead_abovedot> <dead_abovedot> : "\267" abovedot
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <E> : "\313" Eabovedot
+<dead_abovering> <e> : "\353" eabovedot
+<dead_abovering> <Z> : "\335" Zabovedot
+<dead_abovering> <z> : "\375" zabovedot
+<dead_abovedot> <A> : "\305" Aring
+<dead_abovedot> <a> : "\345" aring
+<dead_acute> <dead_acute> : "\377" rightsinglequotemark
+<dead_acute> <C> : "\303" Cacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <Z> : "\312" Zacute
+<dead_acute> <N> : "\321" Nacute
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <S> : "\332" Sacute
+<dead_acute> <c> : "\343" cacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <z> : "\352" zacute
+<dead_acute> <n> : "\361" nacute
+<dead_acute> <o> : "\363" oacute
+<dead_acute> <s> : "\372" sacute
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <S> : "\320" Scaron
+<dead_caron> <Z> : "\336" Zcaron
+<dead_caron> <s> : "\350" ccaron
+<dead_caron> <s> : "\360" scaron
+<dead_caron> <z> : "\376" zcaron
+<dead_cedilla> <R> : "\252" Rcedilla
+<dead_cedilla> <G> : "\314" Gcedilla
+<dead_cedilla> <K> : "\315" Kcedilla
+<dead_cedilla> <L> : "\317" Lcedilla
+<dead_cedilla> <N> : "\322" Ncedilla
+<dead_cedilla> <r> : "\272" rcedilla
+<dead_cedilla> <g> : "\354" gcedilla
+<dead_cedilla> <k> : "\355" kcedilla
+<dead_cedilla> <l> : "\357" lcedilla
+<dead_cedilla> <n> : "\362" ncedilla
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_macron> <A> : "\302" Amacron
+<dead_macron> <E> : "\307" Emacron
+<dead_macron> <I> : "\316" Imacron
+<dead_macron> <O> : "\324" Omacron
+<dead_macron> <U> : "\333" Umacron
+<dead_macron> <a> : "\342" amacron
+<dead_macron> <e> : "\347" emacron
+<dead_macron> <i> : "\356" imacron
+<dead_macron> <o> : "\364" omacron
+<dead_macron> <u> : "\373" umacron
+<dead_macron> <macron> : "\255" macron
+<dead_macron> <dead_macron> : "\255" macron
+<dead_ogonek> <A> : "\300" Aogonek
+<dead_ogonek> <I> : "\301" Iogonek
+<dead_ogonek> <E> : "\306" Eogonek
+<dead_ogonek> <U> : "\330" Uogonek
+<dead_ogonek> <a> : "\340" aogonek
+<dead_ogonek> <i> : "\341" iogonek
+<dead_ogonek> <e> : "\346" eogonek
+<dead_ogonek> <u> : "\370" uogonek
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <E> : "\313" Eabovedot
+<dead_abovering> <e> : "\353" eabovedot
+<dead_abovering> <Z> : "\335" Zabovedot
+<dead_abovering> <z> : "\375" zabovedot
+<dead_abovering> <ring> : "\260" ring
+<dead_abovering> <dead_abovering> : "\260" ring
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-13/XI18N_OBJS b/nls/iso8859-13/XI18N_OBJS
index f20902a6..9fb94782 100644
--- a/nls/iso8859-13/XI18N_OBJS
+++ b/nls/iso8859-13/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for iso8859-13 locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/iso8859-13/XLC_LOCALE.pre b/nls/iso8859-13/XLC_LOCALE.pre
new file mode 100644
index 00000000..4faa3292
--- /dev/null
+++ b/nls/iso8859-13/XLC_LOCALE.pre
@@ -0,0 +1,74 @@
+XCOMM $TOG: iso8859-13 /main/1 1998/05/20 13:49:21 kaleb $
+XCOMM XLocale Database Sample for iso8859-13.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/iso8859-13,v 1.1 2000/10/27 18:30:56 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-13:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-13:GR
+ }
+ font {
+ primary ISO8859-13:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-13
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-13:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-13:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/iso8859-14/Compose.pre b/nls/iso8859-14/Compose.pre
new file mode 100644
index 00000000..3452b0f1
--- /dev/null
+++ b/nls/iso8859-14/Compose.pre
@@ -0,0 +1,508 @@
+XCOMM ISO 8859-14 (Latin 8) Compose Sequences
+XCOMM
+XCOMM Original version by Alastair McKinstry, <amck@maths.tcd.ie>
+XCOMM Fixed and tidied up by Seamus O Ciardhuain <seoc@cnds.ucd.ie> (Dec 2002)
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-14,v 1.5 2002/12/19 00:57:15 dawes Exp $
+XCOMM
+XCOMM First part is taken from the Latin-1 definitions,
+XCOMM i.e. characters the same in 8859-1 and 8859-14.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <r> <o> : "\256" registered
+<Multi_key> <o> <r> : "\256" registered
+<Multi_key> <R> <0> : "\256" registered
+<Multi_key> <r> <0> : "\256" registered
+<Multi_key> <0> <R> : "\256" registered
+<Multi_key> <0> <r> : "\256" registered
+
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+
+
+XCOMM The following is Celtic character support,
+XCOMM i.e. the characters in 8859-14 which differ from 8859-1.
+
+<Multi_key> <period> <b> : "\242" babovedot
+<Multi_key> <period> <B> : "\241" Babovedot
+<Multi_key> <period> <c> : "\245" cabovedot
+<Multi_key> <period> <C> : "\245" Cabovedot
+<Multi_key> <period> <d> : "\253" dabovedot
+<Multi_key> <period> <D> : "\246" Dabovedot
+<Multi_key> <period> <f> : "\261" fabovedot
+<Multi_key> <period> <F> : "\260" Fabovedot
+<Multi_key> <period> <g> : "\263" gabovedot
+<Multi_key> <period> <G> : "\262" Gabovedot
+<Multi_key> <period> <m> : "\265" mabovedot
+<Multi_key> <period> <M> : "\264" Mabovedot
+<Multi_key> <period> <p> : "\271" pabovedot
+<Multi_key> <period> <P> : "\267" Pabovedot
+<Multi_key> <period> <s> : "\277" sabovedot
+<Multi_key> <period> <S> : "\273" Sabovedot
+<Multi_key> <period> <t> : "\367" tabovedot
+<Multi_key> <period> <T> : "\327" Tabovedot
+
+<Multi_key> <b> <period> : "\242" babovedot
+<Multi_key> <B> <period> : "\241" Babovedot
+<Multi_key> <c> <period> : "\245" cabovedot
+<Multi_key> <C> <period> : "\245" Cabovedot
+<Multi_key> <d> <period> : "\253" dabovedot
+<Multi_key> <D> <period> : "\246" Dabovedot
+<Multi_key> <f> <period> : "\261" fabovedot
+<Multi_key> <F> <period> : "\260" Fabovedot
+<Multi_key> <g> <period> : "\263" gabovedot
+<Multi_key> <G> <period> : "\262" Gabovedot
+<Multi_key> <m> <period> : "\265" mabovedot
+<Multi_key> <M> <period> : "\264" Mabovedot
+<Multi_key> <p> <period> : "\271" pabovedot
+<Multi_key> <P> <period> : "\267" Pabovedot
+<Multi_key> <s> <period> : "\277" sabovedot
+<Multi_key> <S> <period> : "\273" Sabovedot
+<Multi_key> <t> <period> : "\367" tabovedot
+<Multi_key> <T> <period> : "\327" Tabovedot
+
+<Multi_key> <y> <asciicircum> : "\376" ycircumflex
+<Multi_key> <asciicircum> <y> : "\376" ycircumflex
+<Multi_key> <Y> <asciicircum> : "\336" Ycircumflex
+<Multi_key> <asciicircum> <Y> : "\336" Ycircumflex
+
+<Multi_key> <w> <asciicircum> : "\360" wcircumflex
+<Multi_key> <asciicircum> <w> : "\360" wcircumflex
+<Multi_key> <W> <asciicircum> : "\320" Wcircumflex
+<Multi_key> <asciicircum> <W> : "\320" Wcircumflex
+
+<Multi_key> <Y> <quotedbl> : "\257" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\257" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\257" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\257" Ydiaeresis
+
+<Multi_key> <W> <quotedbl> : "\275" Wdiaeresis
+<Multi_key> <quotedbl> <W> : "\275" Wdiaeresis
+<Multi_key> <W> <diaeresis> : "\275" Wdiaeresis
+<Multi_key> <diaeresis> <W> : "\275" Wdiaeresis
+<Multi_key> <w> <quotedbl> : "\276" wdiaeresis
+<Multi_key> <quotedbl> <w> : "\276" wdiaeresis
+<Multi_key> <w> <diaeresis> : "\276" wdiaeresis
+<Multi_key> <diaeresis> <w> : "\276" wdiaeresis
+
+<Multi_key> <Y> <grave> : "\254" Ygrave
+<Multi_key> <grave> <Y> : "\254" Ygrave
+<Multi_key> <y> <grave> : "\274" ygrave
+<Multi_key> <grave> <y> : "\274" ygrave
+
+<Multi_key> <W> <grave> : "\250" Wgrave
+<Multi_key> <grave> <W> : "\250" Wgrave
+<Multi_key> <w> <grave> : "\270" wgrave
+<Multi_key> <grave> <w> : "\270" wgrave
+
+<Multi_key> <W> <apostrophe> : "\252" Wacute
+<Multi_key> <apostrophe> <W> : "\252" Wacute
+<Multi_key> <W> <acute> : "\252" Wacute
+<Multi_key> <acute> <W> : "\252" Wacute
+<Multi_key> <w> <apostrophe> : "\272" wacute
+<Multi_key> <apostrophe> <w> : "\272" wacute
+<Multi_key> <w> <acute> : "\272" wacute
+<Multi_key> <acute> <w> : "\272" wacute
+
+<dead_abovedot> <b> : "\242" babovedot
+<dead_abovedot> <B> : "\241" Babovedot
+<dead_abovedot> <c> : "\245" cabovedot
+<dead_abovedot> <C> : "\245" Cabovedot
+<dead_abovedot> <d> : "\253" dabovedot
+<dead_abovedot> <D> : "\246" Dabovedot
+<dead_abovedot> <f> : "\261" fabovedot
+<dead_abovedot> <F> : "\260" Fabovedot
+<dead_abovedot> <g> : "\263" gabovedot
+<dead_abovedot> <G> : "\262" Gabovedot
+<dead_abovedot> <m> : "\265" mabovedot
+<dead_abovedot> <M> : "\264" Mabovedot
+<dead_abovedot> <p> : "\271" pabovedot
+<dead_abovedot> <P> : "\267" Pabovedot
+<dead_abovedot> <s> : "\277" sabovedot
+<dead_abovedot> <S> : "\273" Sabovedot
+<dead_abovedot> <t> : "\367" tabovedot
+<dead_abovedot> <T> : "\327" Tabovedot
+
+<dead_circumflex> <b> : "\242" babovedot
+<dead_circumflex> <B> : "\241" Babovedot
+<dead_circumflex> <c> : "\245" cabovedot
+<dead_circumflex> <C> : "\245" Cabovedot
+<dead_circumflex> <d> : "\253" dabovedot
+<dead_circumflex> <D> : "\246" Dabovedot
+<dead_circumflex> <f> : "\261" fabovedot
+<dead_circumflex> <F> : "\260" Fabovedot
+<dead_circumflex> <g> : "\263" gabovedot
+<dead_circumflex> <G> : "\262" Gabovedot
+<dead_circumflex> <m> : "\265" mabovedot
+<dead_circumflex> <M> : "\264" Mabovedot
+<dead_circumflex> <p> : "\271" pabovedot
+<dead_circumflex> <P> : "\267" Pabovedot
+<dead_circumflex> <s> : "\277" sabovedot
+<dead_circumflex> <S> : "\273" Sabovedot
+<dead_circumflex> <t> : "\367" tabovedot
+<dead_circumflex> <T> : "\327" Tabovedot
+
+<dead_acute> <b> : "\242" babovedot
+<dead_acute> <B> : "\241" Babovedot
+<dead_acute> <c> : "\245" cabovedot
+<dead_acute> <C> : "\245" Cabovedot
+<dead_acute> <d> : "\253" dabovedot
+<dead_acute> <D> : "\246" Dabovedot
+<dead_acute> <f> : "\261" fabovedot
+<dead_acute> <F> : "\260" Fabovedot
+<dead_acute> <g> : "\263" gabovedot
+<dead_acute> <G> : "\262" Gabovedot
+<dead_acute> <m> : "\265" mabovedot
+<dead_acute> <M> : "\264" Mabovedot
+<dead_acute> <p> : "\271" pabovedot
+<dead_acute> <P> : "\267" Pabovedot
+<dead_acute> <s> : "\277" sabovedot
+<dead_acute> <S> : "\273" Sabovedot
+<dead_acute> <t> : "\367" tabovedot
+<dead_acute> <T> : "\327" Tabovedot
+
+<dead_diaeresis> <Y> : "\257" Ydiaeresis
+
+<dead_grave> <Y> : "\254" Ygrave
+<dead_grave> <y> : "\274" ygrave
+
+<dead_circumflex> <y> : "\376" ycircumflex
+<dead_circumflex> <Y> : "\336" Ycircumflex
+
+<dead_circumflex> <w> : "\360" wcircumflex
+<dead_circumflex> <W> : "\320" Wcircumflex
+
+<dead_diaeresis> <w> : "\276" wdiaeresis
+<dead_diaeresis> <W> : "\275" Wdiaeresis
+
+<dead_acute> <w> : "\272" wacute
+<dead_acute> <W> : "\252" Wacute
+
+<dead_grave> <W> : "\250" Wgrave
+<dead_grave> <w> : "\270" wgrave
+
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-14/XI18N_OBJS b/nls/iso8859-14/XI18N_OBJS
new file mode 100644
index 00000000..ebd00a6b
--- /dev/null
+++ b/nls/iso8859-14/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-14 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-14/XLC_LOCALE.pre b/nls/iso8859-14/XLC_LOCALE.pre
new file mode 100644
index 00000000..56afe701
--- /dev/null
+++ b/nls/iso8859-14/XLC_LOCALE.pre
@@ -0,0 +1,74 @@
+XCOMM $TOG: iso8859-14 /main/1 1998/05/20 14:49:21 kaleb $
+XCOMM XLocale Database Sample for iso8859-14.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/iso8859-14,v 1.1 1999/06/06 14:05:59 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-14:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-14:GR
+ }
+ font {
+ primary ISO8859-14:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-14
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-14:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-14:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/iso8859-15/Compose.pre b/nls/iso8859-15/Compose.pre
new file mode 100644
index 00000000..3770e803
--- /dev/null
+++ b/nls/iso8859-15/Compose.pre
@@ -0,0 +1,470 @@
+XCOMM $TOG: fcd8859-15 /main/2 1998/06/17 15:53:45 kaleb $
+XCOMM
+XCOMM ISO 8859-15 (Latin1) Compose Sequence
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-15,v 1.9 2002/12/17 04:58:42 dawes Exp $
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <parenleft> <C> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\"" quotedbl
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <acute> <C> : "\307" Ccedilla
+<Multi_key> <acute> <c> : "\347" ccedilla
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <o> <e> : "\275" oe
+<Multi_key> <S> <less> : "\246" Scaron
+<Multi_key> <less> <S> : "\246" Scaron
+<Multi_key> <s> <less> : "\250" scaron
+<Multi_key> <less> <s> : "\250" scaron
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\264" Zcaron
+<Multi_key> <less> <Z> : "\264" Zcaron
+<Multi_key> <z> <less> : "\270" zcaron
+<Multi_key> <less> <z> : "\270" zcaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_circumflex> <space> : "^" asciicircum
+<dead_circumflex> <dead_circumflex> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_grave> <dead_grave> : "`" grave
+XCOMM These are for us_intl, that does not have diaeresis, etc
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <dead_acute> : "\264" acute
+<dead_diaeresis> <space> : "\"" quotedbl
+<dead_diaeresis> <dead_diaeresis> : "\"" quotedbl
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\"" quotedbl
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_caron> <s> : "\250" scaron
+<dead_circumflex> <S> : "\246" Scaron
+<dead_circumflex> <s> : "\250" scaron
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_caron> <z> : "\270" zcaron
+<dead_circumflex> <Z> : "\264" Zcaron
+<dead_circumflex> <z> : "\270" zcaron
+XCOMM Useful for portuguese language
+<dead_acute> <C> : "\307" Ccedilla
+<dead_acute> <c> : "\347" ccedilla
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-15/XI18N_OBJS b/nls/iso8859-15/XI18N_OBJS
new file mode 100644
index 00000000..1e4f6cc5
--- /dev/null
+++ b/nls/iso8859-15/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-15 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-15/XLC_LOCALE.pre b/nls/iso8859-15/XLC_LOCALE.pre
new file mode 100644
index 00000000..a6525974
--- /dev/null
+++ b/nls/iso8859-15/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $TOG: fcd8859-15 /main/1 1998/05/20 14:49:16 kaleb $
+XCOMM XLocale Database Sample for fcd/dis/iso 8859-15.
+XCOMM When Final Committee Draft (FCD) 8859-15 is formalized
+XCOMM then this file will be renamed iso8859-15.
+XCOMM This file is provided as preliminary support for the Latin-9
+XCOMM (a.k.a. Latin-0) character set so that Europeans who want
+XCOMM the Euro currency character can do so.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/iso8859-15,v 1.3 1998/10/25 12:47:53 dawes Exp $
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-15:GL
+ substitute ISO8859-15:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-15:GR
+ }
+ font {
+ primary ISO8859-15:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-15
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-15:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-15:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/iso8859-2/Compose.pre b/nls/iso8859-2/Compose.pre
index 3e7c0a4d..953c8a8b 100644
--- a/nls/iso8859-2/Compose.pre
+++ b/nls/iso8859-2/Compose.pre
@@ -1,11 +1,13 @@
-# $Xorg: iso8859-2,v 1.3 2000/08/17 19:46:59 cpqbld Exp $
-#
-# ISO 8859-2 (Latin2) Compose Sequence
-#
-# Sequence Definition
-#
-# <Multi_key> Means <Compose>
-# Special Character
+XCOMM $Xorg: iso8859-2,v 1.3 2000/08/17 19:46:59 cpqbld Exp $
+XCOMM
+XCOMM ISO 8859-2 (Latin2) Compose Sequence
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-2,v 1.7 2001/08/13 17:46:02 dawes Exp $
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
<Multi_key> <plus> <plus> : "#" numbersign
<Multi_key> <apostrophe> <space> : "'" apostrophe
<Multi_key> <space> <apostrophe> : "'" apostrophe
@@ -51,10 +53,10 @@
<Multi_key> <exclam> <p> : "\266" paragraph
<Multi_key> <P> <exclam> : "\266" paragraph
<Multi_key> <exclam> <P> : "\266" paragraph
-# Right-hand side (Accented Alphabet)
-# These compose sequences are pure supposition on my part.
-# It would be nice to know what the real cultural conventions
-# are for compose sequences.
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
<Multi_key> <A> <comma> : "\241" Aogonek
<Multi_key> <comma> <A> : "\241" Aogonek
<Multi_key> <A> <ogonek> : "\241" Aogonek
@@ -332,10 +334,10 @@
<Multi_key> <less> <n> : "\362" ncaron
<Multi_key> <n> <caron> : "\362" ncaron
<Multi_key> <caron> <n> : "\362" ncaron
-<Multi_key> <o> <acute> : "\363" nacute
-<Multi_key> <acute> <o> : "\363" nacute
-<Multi_key> <o> <apostrophe> : "\363" nacute
-<Multi_key> <apostrophe> <o> : "\363" nacute
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
<Multi_key> <o> <asciicircum> : "\364" ocircumflex
<Multi_key> <asciicircum> <o> : "\364" ocircumflex
<Multi_key> <o> <greater> : "\364" ocircumflex
@@ -387,7 +389,7 @@
<dead_acute> <i> : "\355" iacute
<dead_acute> <l> : "\345" lacute
<dead_acute> <n> : "\361" nacute
-<dead_acute> <o> : "\363" nacute
+<dead_acute> <o> : "\363" oacute
<dead_acute> <r> : "\340" racute
<dead_acute> <s> : "\266" sacute
<dead_acute> <u> : "\372" uacute
@@ -447,4 +449,120 @@
<dead_ogonek> <E> : "\312" Eogonek
<dead_ogonek> <a> : "\261" aogonek
<dead_ogonek> <e> : "\352" eogonek
-# End of Sequence Definition
+XCOMM those are for ease of use
+<dead_abovedot> <U> : "\331" Uring
+<dead_abovedot> <u> : "\371" uring
+<dead_caron> <U> : "\331" Uring
+<dead_caron> <u> : "\371" uring
+XCOMM traditional sequences
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <e> : "\275" oe
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <dead_abovering> : "\260" degree
+<dead_abovering> <degree> : "\260" degree
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <nobreakspace> : "\260" degree
+<dead_tilde> <I> : "\245" Itilde
+<dead_tilde> <i> : "\265" itilde
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <U> : "\335" Utilde
+<dead_tilde> <a> : "\343" atilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <u> : "\375" utilde
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <nobreakspace> : "~" asciitilde
+<dead_caron> <caron> : "\267" caron
+<dead_caron> <dead_caron> : "\267" caron
+<dead_caron> <space> : "\267" caron
+<dead_caron> <nobreakspace> : "\267" caron
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_circumflex> <dead_circumflex> : "\136" asciicircum
+<dead_circumflex> <asciicircum> : "\136" asciicircum
+<dead_circumflex> <space> : "\136" asciicircum
+<dead_circumflex> <nobreakspace> : "\136" asciicircum
+<dead_breve> <G> : "\253" Gbreve
+<dead_breve> <g> : "\273" gbreve
+<dead_breve> <U> : "\335" Ubreve
+<dead_breve> <u> : "\375" ubreve
+<dead_breve> <dead_breve> : "\242" breve
+<dead_breve> <breve> : "\242" breve
+<dead_breve> <space> : "\242" breve
+<dead_breve> <nobreakspace> : "\242" breve
+<dead_ogonek> <A> : "\241" Aogonek
+<dead_ogonek> <a> : "\261" aogonek
+<dead_ogonek> <ogonek> : "\262" ogonek
+<dead_ogonek> <dead_ogonek> : "\262" ogonek
+<dead_ogonek> <I> : "\307" Iogonek
+<dead_ogonek> <E> : "\312" Eogonek
+<dead_ogonek> <U> : "\331" Uogonek
+<dead_ogonek> <i> : "\347" iogonek
+<dead_ogonek> <e> : "\352" eogonek
+<dead_ogonek> <u> : "\371" uogonek
+<dead_ogonek> <dead_ogonek> : "\662" ogonek
+<dead_ogonek> <ogonek> : "\662" ogonek
+<dead_ogonek> <space> : "\662" ogonek
+<dead_ogonek> <nobreakspace> : "\662" ogonek
+<dead_grave> <A> : "\300" Agrave
+<dead_grave> <a> : "\340" agrave
+<dead_grave> <E> : "\310" Egrave
+<dead_grave> <e> : "\350" egrave
+<dead_grave> <I> : "\314" Igrave
+<dead_grave> <i> : "\354" igrave
+<dead_grave> <O> : "\322" Ograve
+<dead_grave> <o> : "\362" ograve
+<dead_grave> <U> : "\331" Ugrave
+<dead_grave> <u> : "\371" ugrave
+<dead_grave> <dead_grave> : "`" grave
+<dead_grave> <grave> : "`" grave
+<dead_grave> <space> : "`" grave
+<dead_grave> <nobreakspace> : "`" grave
+<dead_abovedot> <C> : "\305" Cabovedot
+<dead_abovedot> <c> : "\345" cabovedot
+<dead_abovedot> <I> : "\251" Iabovedot
+<dead_abovedot> <i> : "\271" idotless
+<dead_abovedot> <Z> : "\257" Zabovedot
+<dead_abovedot> <z> : "\277" zabovedot
+<dead_abovedot> <E> : "\314" Eabovedot
+<dead_abovedot> <e> : "\354" eabovedot
+<dead_abovedot> <dead_abovedot> : "\377" abovedot
+<dead_abovedot> <abovedot> : "\377" abovedot
+<dead_abovedot> <space> : "\377" abovedot
+<dead_abovedot> <nobreakspace> : "\377" abovedot
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <acute> : "\264" acute
+<dead_acute> <space> : "\264" acute
+<dead_acute> <nobreakspace> : "\264" acute
+<dead_doubleacute> <dead_doubleacute> : "\675" doubleacute
+<dead_doubleacute> <doubleacute> : "\675" doubleacute
+<dead_doubleacute> <space> : "\675" doubleacute
+<dead_doubleacute> <nobreakspace> : "\675" doubleacute
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <diaeresis> : "\250" diaeresis
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_diaeresis> <nobreakspace> : "\250" diaeresis
+<dead_cedilla> <dead_cedilla> : "\270" cedilla
+<dead_cedilla> <cedilla> : "\270" cedilla
+<dead_cedilla> <space> : "\270" cedilla
+<dead_cedilla> <nobreakspace> : "\270" cedilla
+<dead_macron> <dead_macron> : "\257" macron
+<dead_macron> <macron> : "\257" macron
+<dead_macron> <space> : "\257" macron
+<dead_macron> <nobreakspace> : "\257" macron
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-2/XI18N_OBJS b/nls/iso8859-2/XI18N_OBJS
index f20902a6..ca37318b 100644
--- a/nls/iso8859-2/XI18N_OBJS
+++ b/nls/iso8859-2/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for iso8859-2 locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/iso8859-3/Compose.pre b/nls/iso8859-3/Compose.pre
new file mode 100644
index 00000000..b98b2501
--- /dev/null
+++ b/nls/iso8859-3/Compose.pre
@@ -0,0 +1,479 @@
+XCOMM $TOG: fcd8859-15 /main/2 1998/06/17 15:53:45 kaleb $
+XCOMM
+XCOMM ISO 8859-3 (Latin3) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-3,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicirum
+<Multi_key> <space> <greater> : "^" asciicirum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <C> <period> : "\305" Cabovedot
+<Multi_key> <period> <C> : "\305" Cabovedot
+<Multi_key> <C> <asciicircum> : "\306" Ccircumflex
+<Multi_key> <asciicircum> <C> : "\306" Ccircumflex
+<Multi_key> <C> <greater> : "\306" Ccircumflex
+<Multi_key> <greater> <C> : "\306" Ccircumflex
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <c> <period> : "\345" cabovedot
+<Multi_key> <period> <c> : "\345" cabovedot
+<Multi_key> <c> <asciicircum> : "\346" ccircumflex
+<Multi_key> <asciicircum> <c> : "\346" ccircumflex
+<Multi_key> <c> <greater> : "\346" ccircumflex
+<Multi_key> <greater> <c> : "\346" ccircumflex
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\253" Gbreve
+<Multi_key> <G> <parenleft> : "\253" Gbreve
+<Multi_key> <parenleft> <G> : "\253" Gbreve
+<Multi_key> <G> <breve> : "\253" Gbreve
+<Multi_key> <breve> <G> : "\253" Gbreve
+<Multi_key> <G> <period> : "\325" Gabovedot
+<Multi_key> <period> <G> : "\325" Gabovedot
+<Multi_key> <G> <asciicircum> : "\330" Gcircumflex
+<Multi_key> <asciicircum> <G> : "\330" Gcircumflex
+<Multi_key> <G> <greater> : "\330" Gcircumflex
+<Multi_key> <greater> <G> : "\330" Gcircumflex
+<Multi_key> <g> <U> : "\273" gbreve
+<Multi_key> <g> <parenleft> : "\273" gbreve
+<Multi_key> <parenleft> <g> : "\273" gbreve
+<Multi_key> <g> <breve> : "\273" gbreve
+<Multi_key> <breve> <g> : "\273" gbreve
+<Multi_key> <g> <period> : "\365" gabovedot
+<Multi_key> <period> <g> : "\365" gabovedot
+<Multi_key> <g> <asciicircum> : "\370" gcircumflex
+<Multi_key> <asciicircum> <g> : "\370" gcircumflex
+<Multi_key> <g> <greater> : "\370" gcircumflex
+<Multi_key> <greater> <g> : "\370" gcircumflex
+<Multi_key> <H> <minus> : "\241" Hstroke
+<Multi_key> <minus> <H> : "\241" Hstroke
+<Multi_key> <H> <asciicircum> : "\246" Hcircumflex
+<Multi_key> <asciicircum> <H> : "\246" Hcircumflex
+<Multi_key> <H> <greater> : "\246" Hcircumflex
+<Multi_key> <greater> <H> : "\246" Hcircumflex
+<Multi_key> <h> <minus> : "\261" hstroke
+<Multi_key> <minus> <h> : "\261" hstroke
+<Multi_key> <h> <asciicircum> : "\266" hcircumflex
+<Multi_key> <asciicircum> <h> : "\266" hcircumflex
+<Multi_key> <h> <greater> : "\266" hcircumflex
+<Multi_key> <greater> <h> : "\266" hcircumflex
+<Multi_key> <I> <period> : "\251" Iabovedot
+<Multi_key> <period> <I> : "\251" Iabovedot
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <period> : "\271" idotless
+<Multi_key> <period> <i> : "\271" idotless
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <J> <asciicircum> : "\254" Jcircumflex
+<Multi_key> <asciicircum> <J> : "\254" Jcircumflex
+<Multi_key> <J> <greater> : "\254" Jcircumflex
+<Multi_key> <greater> <J> : "\254" Jcircumflex
+<Multi_key> <j> <asciicircum> : "\274" jcircumflex
+<Multi_key> <asciicircum> <j> : "\274" jcircumflex
+<Multi_key> <j> <greater> : "\274" jcircumflex
+<Multi_key> <greater> <j> : "\274" jcircumflex
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <S> <cedilla> : "\252" Scedilla
+<Multi_key> <S> <comma> : "\252" Scedilla
+<Multi_key> <cedilla> <S> : "\252" Scedilla
+<Multi_key> <cedilla> <s> : "\272" scedilla
+<Multi_key> <comma> <S> : "\252" Scedilla
+<Multi_key> <comma> <s> : "\272" scedilla
+<Multi_key> <s> <cedilla> : "\272" scedilla
+<Multi_key> <s> <comma> : "\272" scedilla
+<Multi_key> <S> <asciicircum> : "\336" Scircumflex
+<Multi_key> <asciicircum> <S> : "\336" Scircumflex
+<Multi_key> <S> <greater> : "\336" Scircumflex
+<Multi_key> <greater> <S> : "\336" Scircumflex
+<Multi_key> <s> <asciicircum> : "\376" scircumflex
+<Multi_key> <asciicircum> <s> : "\376" scircumflex
+<Multi_key> <s> <greater> : "\376" scircumflex
+<Multi_key> <greater> <s> : "\376" scircumflex
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <U> <U> : "\335" Ubreve
+<Multi_key> <U> <parenleft> : "\335" Ubreve
+<Multi_key> <parenleft> <U> : "\335" Ubreve
+<Multi_key> <U> <breve> : "\335" Ubreve
+<Multi_key> <breve> <U> : "\335" Ubreve
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <u> <U> : "\375" ubreve
+<Multi_key> <u> <parenleft> : "\375" ubreve
+<Multi_key> <parenleft> <u> : "\375" ubreve
+<Multi_key> <u> <breve> : "\375" ubreve
+<Multi_key> <breve> <u> : "\375" ubreve
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <period> : "\257" Zabovedot
+<Multi_key> <period> <Z> : "\257" Zabovedot
+<Multi_key> <z> <period> : "\277" zabovedot
+<Multi_key> <period> <z> : "\277" zabovedot
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_circumflex> <C> : "\306" Ccircumflex
+<dead_abovedot> <C> : "\305" Cabovedot
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_circumflex> <c> : "\346" ccircumflex
+<dead_abovedot> <c> : "\345" cabovedot
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\253" Gbreve
+<dead_circumflex> <G> : "\330" Gcircumflex
+<dead_breve> <g> : "\273" gbreve
+<dead_circumflex> <g> : "\370" gcircumflex
+<dead_circumflex> <H> : "\246" Hcircumflex
+<dead_circumflex> <h> : "\266" hcircumflex
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <I> : "\251" Iabovedot
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_abovedot> <i> : "\271" idotless
+<dead_circumflex> <J> : "\254" Jcircumflex
+<dead_circumflex> <j> : "\274" jcircumflex
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_cedilla> <S> : "\252" Scedilla
+<dead_circumflex> <S> : "\336" Scircumflex
+<dead_caron> <s> : "\250" scaron
+<dead_cedilla> <s> : "\272" scedilla
+<dead_circumflex> <s> : "\376" scircumflex
+<dead_breve> <U> : "\335" Ubreve
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_breve> <u> : "\375" ubreve
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_abovedot> <Z> : "\257" Zabovedot
+<dead_caron> <z> : "\270" zcaron
+<dead_abovedot> <z> : "\277" zabovedot
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-3/XI18N_OBJS b/nls/iso8859-3/XI18N_OBJS
new file mode 100644
index 00000000..1f39eba7
--- /dev/null
+++ b/nls/iso8859-3/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-3 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-4/Compose.pre b/nls/iso8859-4/Compose.pre
new file mode 100644
index 00000000..a04bde67
--- /dev/null
+++ b/nls/iso8859-4/Compose.pre
@@ -0,0 +1,356 @@
+XCOMM $XFree86: xc/nls/Compose/iso8859-4,v 1.3 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM ISO 8859-4 (Latin4) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <A> <comma> : "\241" Aogonek
+<Multi_key> <comma> <A> : "\241" Aogonek
+<Multi_key> <k> <k> : "\242" kra
+<Multi_key> <R> <comma> : "\243" Rcedilla
+<Multi_key> <comma> <R> : "\243" Rcedilla
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <I> <asciitilde> : "\245" Itilde
+<Multi_key> <asciitilde> <I> : "\245" Itilde
+<Multi_key> <L> <comma> : "\246" Lcedilla
+<Multi_key> <comma> <L> : "\246" Lcedilla
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+<Multi_key> <S> <less> : "\251" Scaron
+<Multi_key> <less> <S> : "\251" Scaron
+<Multi_key> <E> <minus> : "\252" Emacron
+<Multi_key> <minus> <E> : "\252" Emacron
+<Multi_key> <E> <underscore> : "\252" Emacron
+<Multi_key> <underscore> <E> : "\252" Emacron
+<Multi_key> <G> <comma> : "\253" Gcedilla
+<Multi_key> <comma> <G> : "\253" Gcedilla
+<Multi_key> <T> <minus> : "\254" Tstroke
+<Multi_key> <T> <slash> : "\254" Tstroke
+<Multi_key> <slash> <T> : "\254" Tstroke
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <Z> <less> : "\256" Zcaron
+<Multi_key> <less> <Z> : "\256" Zcaron
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <a> <comma> : "\261" aogonek
+<Multi_key> <comma> <a> : "\261" aogonek
+<Multi_key> <comma> <comma> : "\262" ogonek
+<Multi_key> <r> <comma> : "\263" rcedilla
+<Multi_key> <comma> <r> : "\263" rcedilla
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <i> <asciitilde> : "\265" itilde
+<Multi_key> <asciitilde> <i> : "\265" itilde
+<Multi_key> <l> <comma> : "\266" lcedilla
+<Multi_key> <comma> <l> : "\266" lcedilla
+<Multi_key> <less> <less> : "\267" caron
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <s> <less> : "\271" scaron
+<Multi_key> <less> <s> : "\271" scaron
+<Multi_key> <e> <minus> : "\272" emacron
+<Multi_key> <minus> <e> : "\272" emacron
+<Multi_key> <e> <underscore> : "\272" emacron
+<Multi_key> <underscore> <e> : "\272" emacron
+<Multi_key> <g> <comma> : "\273" gcedilla
+<Multi_key> <comma> <g> : "\273" gcedilla
+<Multi_key> <t> <minus> : "\274" tstroke
+<Multi_key> <t> <slash> : "\274" tstroke
+<Multi_key> <slash> <t> : "\274" tstroke
+<Multi_key> <N> <G> : "\275" ENG
+<Multi_key> <z> <less> : "\276" zcaron
+<Multi_key> <less> <z> : "\276" zcaron
+<Multi_key> <n> <g> : "\277" eng
+<Multi_key> <A> <underscore> : "\300" Amacron
+<Multi_key> <underscore> <A> : "\300" Amacron
+<Multi_key> <A> <minus> : "\300" Amacron
+<Multi_key> <minus> <A> : "\300" Amacron
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <I> <comma> : "\307" Iogonek
+<Multi_key> <comma> <I> : "\307" Iogonek
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <comma> : "\312" Eogonek
+<Multi_key> <comma> <E> : "\312" Eogonek
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <period> : "\314" Eabovedot
+<Multi_key> <period> <E> : "\314" Eabovedot
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <minus> : "\317" Imacron
+<Multi_key> <minus> <I> : "\317" Imacron
+<Multi_key> <I> <underscore> : "\317" Imacron
+<Multi_key> <underscore> <I> : "\317" Imacron
+<Multi_key> <D> <minus> : "\320" Dstroke
+<Multi_key> <minus> <D> : "\320" Dstroke
+<Multi_key> <N> <comma> : "\321" Ncedilla
+<Multi_key> <comma> <N> : "\321" Ncedilla
+<Multi_key> <O> <underscore> : "\322" Omacron
+<Multi_key> <underscore> <O> : "\322" Omacron
+<Multi_key> <O> <minus> : "\322" Omacron
+<Multi_key> <minus> <O> : "\322" Omacron
+<Multi_key> <K> <comma> : "\323" Kcedilla
+<Multi_key> <comma> <K> : "\323" Kcedilla
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <U> <comma> : "\331" Uogonek
+<Multi_key> <comma> <U> : "\331" Uogonek
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <asciitilde> : "\335" Utilde
+<Multi_key> <asciitilde> <U> : "\335" Utilde
+<Multi_key> <U> <underscore> : "\336" Umacron
+<Multi_key> <underscore> <U> : "\336" Umacron
+<Multi_key> <U> <minus> : "\336" Umacron
+<Multi_key> <minus> <U> : "\336" Umacron
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <a> <underscore> : "\340" amacron
+<Multi_key> <underscore> <a> : "\340" amacron
+<Multi_key> <a> <minus> : "\340" amacron
+<Multi_key> <minus> <a> : "\340" amacron
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <i> <comma> : "\347" iogonek
+<Multi_key> <comma> <i> : "\347" iogonek
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <comma> : "\352" eogonek
+<Multi_key> <comma> <e> : "\352" eogonek
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <period> : "\354" eabovedot
+<Multi_key> <period> <e> : "\354" eabovedot
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <minus> : "\357" imacron
+<Multi_key> <minus> <i> : "\357" imacron
+<Multi_key> <i> <underscore> : "\357" imacron
+<Multi_key> <underscore> <i> : "\357" imacron
+<Multi_key> <d> <minus> : "\360" dstroke
+<Multi_key> <minus> <d> : "\360" dstroke
+<Multi_key> <n> <comma> : "\361" ncedilla
+<Multi_key> <comma> <n> : "\361" ncedilla
+<Multi_key> <o> <underscore> : "\362" omacron
+<Multi_key> <underscore> <o> : "\362" omacron
+<Multi_key> <o> <minus> : "\362" omacron
+<Multi_key> <minus> <o> : "\362" omacron
+<Multi_key> <k> <comma> : "\363" kcedilla
+<Multi_key> <comma> <k> : "\363" kcedilla
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+
+<Multi_key> <o> <slash> : "\370" ooblique
+<Multi_key> <slash> <o> : "\370" ooblique
+<Multi_key> <u> <comma> : "\371" uogonek
+<Multi_key> <comma> <u> : "\371" uogonek
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <asciitilde> : "\375" utilde
+<Multi_key> <asciitilde> <u> : "\375" utilde
+<Multi_key> <u> <underscore> : "\376" umacron
+<Multi_key> <underscore> <u> : "\376" umacron
+<Multi_key> <u> <minus> : "\376" umacron
+<Multi_key> <minus> <u> : "\376" umacron
+<Multi_key> <period> <period> : "\377" abovedot
+
+<dead_abovedot> <E> : "\314" Eabovedot
+<dead_abovedot> <e> : "\354" eabovedot
+<dead_abovedot> <abovedot> : "\377" abovedot
+<dead_abovedot> <dead_abovedot> : "\377" abovedot
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_acute> <acute> : "\264" acute
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <a> : "\341" aacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <i> : "\355" iacute
+<dead_acute> <u> : "\372" uacute
+<dead_caron> <S> : "\251" Scaron
+<dead_caron> <Z> : "\256" Zcaron
+<dead_caron> <caron> : "\267" caron
+<dead_caron> <dead_caron> : "\267" caron
+<dead_caron> <s> : "\271" scaron
+<dead_caron> <z> : "\276" zcaron
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <c> : "\350" ccaron
+<dead_cedilla> <R> : "\243" Rcedilla
+<dead_cedilla> <L> : "\246" Lcedilla
+<dead_cedilla> <G> : "\253" Gcedilla
+<dead_cedilla> <r> : "\263" rcedilla
+<dead_cedilla> <l> : "\266" lcedilla
+<dead_cedilla> <cedilla> : "\270" cedilla
+<dead_cedilla> <dead_cedilla> : "\270" cedilla
+<dead_cedilla> <g> : "\273" gcedilla
+<dead_cedilla> <N> : "\321" Ncedilla
+<dead_cedilla> <K> : "\323" Kcedilla
+<dead_cedilla> <n> : "\361" ncedilla
+<dead_cedilla> <k> : "\363" kcedilla
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <diaeresis> : "\250" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_macron> <E> : "\252" Emacron
+<dead_macron> <macron> : "\257" macron
+<dead_macron> <dead_macron> : "\257" macron
+<dead_macron> <e> : "\272" emacron
+<dead_macron> <A> : "\300" Amacron
+<dead_macron> <I> : "\317" Imacron
+<dead_macron> <O> : "\322" Omacron
+<dead_macron> <U> : "\336" Umacron
+<dead_macron> <a> : "\340" amacron
+<dead_macron> <i> : "\357" imacron
+<dead_macron> <o> : "\362" omacron
+<dead_macron> <u> : "\376" umacron
+<dead_ogonek> <A> : "\241" Aogonek
+<dead_ogonek> <a> : "\261" aogonek
+<dead_ogonek> <ogonek> : "\262" ogonek
+<dead_ogonek> <dead_ogonek> : "\262" ogonek
+<dead_ogonek> <I> : "\307" Iogonek
+<dead_ogonek> <E> : "\312" Eogonek
+<dead_ogonek> <U> : "\331" Uogonek
+<dead_ogonek> <i> : "\347" iogonek
+<dead_ogonek> <e> : "\352" eogonek
+<dead_ogonek> <u> : "\371" uogonek
+<dead_abovering> <ring> : "\260" ring
+<dead_abovering> <dead_abovering> : "\260" ring
+<dead_tilde> <I> : "\245" Itilde
+<dead_tilde> <i> : "\265" itilde
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <U> : "\335" Utilde
+<dead_tilde> <a> : "\343" atilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <u> : "\375" utilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-4/XI18N_OBJS b/nls/iso8859-4/XI18N_OBJS
new file mode 100644
index 00000000..7404dab9
--- /dev/null
+++ b/nls/iso8859-4/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-4 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-5/Compose.pre b/nls/iso8859-5/Compose.pre
new file mode 100644
index 00000000..bcc9b2f1
--- /dev/null
+++ b/nls/iso8859-5/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ISO 8859-5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-5,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-5/XI18N_OBJS b/nls/iso8859-5/XI18N_OBJS
index f20902a6..8310cf1e 100644
--- a/nls/iso8859-5/XI18N_OBJS
+++ b/nls/iso8859-5/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for iso8859-5 locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/iso8859-6/Compose.pre b/nls/iso8859-6/Compose.pre
new file mode 100644
index 00000000..438eb91e
--- /dev/null
+++ b/nls/iso8859-6/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ISO 8859-6 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-6,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-6/XI18N_OBJS b/nls/iso8859-6/XI18N_OBJS
new file mode 100644
index 00000000..ab2d3007
--- /dev/null
+++ b/nls/iso8859-6/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-6 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-7/Compose.pre b/nls/iso8859-7/Compose.pre
new file mode 100644
index 00000000..d383d618
--- /dev/null
+++ b/nls/iso8859-7/Compose.pre
@@ -0,0 +1,231 @@
+XCOMM $TOG: iso8859-7 /main/7 1998/05/20 15:33:23 kaleb $
+XCOMM
+XCOMM ISO 8859-7 (Greek) Compose Sequence
+XCOMM
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-7,v 1.5 2001/12/24 17:15:10 dawes Exp $
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <1> <2> : "\275" onehalf
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <bar> <bar> : "\246" brokenbar
+<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
+<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
+<Multi_key> <V> <B> : "\246" brokenbar
+<Multi_key> <B> <V> : "\246" brokenbar
+<Multi_key> <v> <b> : "\246" brokenbar
+<Multi_key> <b> <v> : "\246" brokenbar
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+XCOMM should be Greek tonos but not defined in X11
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+XCOMM should be Greek dialytika but not defined in X11
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM special characters that don't exist in Latin-1
+<Multi_key> <less> <apostrophe> : "\241" leftsinglequotemark
+<Multi_key> <apostrophe> <less> : "\241" leftsinglequotemark
+<Multi_key> <greater> <apostrophe> : "\242" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "\242" rightsinglequotemark
+<Multi_key> <asciitilde> <asciitilde> : "\257" Greek_horizbar
+
+XCOMM Accented Alphabet
+<Multi_key> <Greek_ALPHA> <apostrophe> : "\266" Greek_ALPHAaccent
+<Multi_key> <apostrophe> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
+<Multi_key> <Greek_EPSILON> <apostrophe>: "\270" Greek_EPSILONaccent
+<Multi_key> <apostrophe> <Greek_EPSILON>: "\270" Greek_EPSILONaccent
+<Multi_key> <Greek_ETA> <apostrophe> : "\271" Greek_ETAaccent
+<Multi_key> <apostrophe> <Greek_ETA> : "\271" Greek_ETAaccent
+<Multi_key> <Greek_IOTA> <apostrophe> : "\272" Greek_IOTAaccent
+<Multi_key> <apostrophe> <Greek_IOTA> : "\272" Greek_IOTAaccent
+<Multi_key> <Greek_OMICRON> <apostrophe>: "\274" Greek_OMICRONaccent
+<Multi_key> <apostrophe> <Greek_OMICRON>: "\274" Greek_OMICRONaccent
+<Multi_key> <Greek_UPSILON> <apostrophe>: "\276" Greek_UPSILONaccent
+<Multi_key> <apostrophe> <Greek_UPSILON>: "\276" Greek_UPSILONaccent
+<Multi_key> <Greek_OMEGA> <apostrophe> : "\277" Greek_OMEGAaccent
+<Multi_key> <apostrophe> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
+<Multi_key> <Greek_IOTA> <quotedbl> : "\332" Greek_IOTAdiaeresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "\332" Greek_IOTAdiaeresis
+<Multi_key> <Greek_IOTA> <quotedbl> : "\332" Greek_IOTAdieresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "\332" Greek_IOTAdieresis
+<Multi_key> <Greek_UPSILON> <quotedbl> : "\333" Greek_UPSILONdieresis
+<Multi_key> <quotedbl> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
+
+<Multi_key> <Greek_alpha> <apostrophe> : "\334" Greek_alphaaccent
+<Multi_key> <apostrophe> <Greek_alpha> : "\334" Greek_alphaaccent
+<Multi_key> <Greek_epsilon> <apostrophe>: "\335" Greek_epsilonaccent
+<Multi_key> <apostrophe> <Greek_epsilon>: "\335" Greek_epsilonaccent
+<Multi_key> <Greek_eta> <apostrophe> : "\336" Greek_etaaccent
+<Multi_key> <apostrophe> <Greek_eta> : "\336" Greek_etaaccent
+<Multi_key> <Greek_iota> <apostrophe> : "\337" Greek_iotaaccent
+<Multi_key> <apostrophe> <Greek_iota> : "\337" Greek_iotaaccent
+<Multi_key> <Greek_omicron> <apostrophe>: "\374" Greek_omicronaccent
+<Multi_key> <apostrophe> <Greek_omicron>: "\374" Greek_omicronaccent
+<Multi_key> <Greek_upsilon> <apostrophe>: "\375" Greek_upsilonaccent
+<Multi_key> <apostrophe> <Greek_upsilon>: "\375" Greek_upsilonaccent
+<Multi_key> <Greek_omega> <apostrophe> : "\376" Greek_omegaaccent
+<Multi_key> <apostrophe> <Greek_omega> : "\376" Greek_omegaaccent
+<Multi_key> <Greek_iota> <quotedbl> : "\372" Greek_iotadieresis
+<Multi_key> <quotedbl> <Greek_iota> : "\372" Greek_iotadieresis
+<Multi_key> <Greek_upsilon> <quotedbl> : "\373" Greek_upsilondieresis
+<Multi_key> <quotedbl> <Greek_upsilon> : "\373" Greek_upsilondieresis
+
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <space> : "\265" Greek_accentdieresis
+<Multi_key> <quotedbl> <apostrophe> <space> : "\265" Greek_accentdieresis
+
+XCOMM
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <dead_abovering> : "\260" degree
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_circumflex> <exclam> : "\246" brokenbar
+<dead_cedilla> <minus> : "\254" notsign
+<dead_acute> <apostrophe> : "\264" acute
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+
+XCOMM Accented Alphabet (plus some more symbols)
+<dead_acute> <Greek_alpha> : "\334" Greek_alphaaccent
+<dead_acute> <Greek_epsilon> : "\335" Greek_epsilonaccent
+<dead_acute> <Greek_eta> : "\336" Greek_etaaccent
+<dead_acute> <Greek_iota> : "\337" Greek_iotaaccent
+<dead_acute> <Greek_omicron> : "\374" Greek_omicronaccent
+<dead_acute> <Greek_upsilon> : "\375" Greek_upsilonaccent
+<dead_acute> <Greek_omega> : "\376" Greek_omegaaccent
+<dead_acute> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
+<dead_acute> <Greek_EPSILON> : "\270" Greek_EPSILONaccent
+<dead_acute> <Greek_ETA> : "\271" Greek_ETAaccent
+<dead_acute> <Greek_IOTA> : "\272" Greek_IOTAaccent
+<dead_acute> <Greek_OMICRON> : "\274" Greek_OMICRONaccent
+<dead_acute> <Greek_UPSILON> : "\276" Greek_UPSILONaccent
+<dead_acute> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
+<dead_acute> <space> : "\264" acute
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <period> : "\267" periodcentered
+<dead_acute> <less> : "\253" guillemotleft
+<dead_acute> <greater> : "\273" guillemotright
+
+<dead_diaeresis> <Greek_iota> : "\372" Greek_iotadieresis
+<dead_diaeresis> <Greek_upsilon> : "\373" Greek_upsilondieresis
+<dead_diaeresis> <Greek_IOTA> : "\332" Greek_IOTAdiaeresis
+<dead_diaeresis> <Greek_IOTA> : "\332" Greek_IOTAdieresis
+<dead_diaeresis> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <period> : "\267" periodcentered
+<dead_diaeresis> <less> : "\253" guillemotleft
+<dead_diaeresis> <greater> : "\273" guillemotright
+
+<dead_acute> <dead_diaeresis> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<dead_acute> <dead_diaeresis> <space> : "\265" Greek_accentdieresis
+
+<dead_diaeresis> <dead_acute> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<dead_diaeresis> <dead_acute> <space> : "\265" Greek_accentdieresis
diff --git a/nls/iso8859-7/XI18N_OBJS b/nls/iso8859-7/XI18N_OBJS
index f20902a6..64ea4732 100644
--- a/nls/iso8859-7/XI18N_OBJS
+++ b/nls/iso8859-7/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for iso8859-7 locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/iso8859-8/Compose.pre b/nls/iso8859-8/Compose.pre
new file mode 100644
index 00000000..37446d24
--- /dev/null
+++ b/nls/iso8859-8/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ISO 8859-8 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-8,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-8/XI18N_OBJS b/nls/iso8859-8/XI18N_OBJS
new file mode 100644
index 00000000..e85b513b
--- /dev/null
+++ b/nls/iso8859-8/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-8 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-9/Compose.pre b/nls/iso8859-9/Compose.pre
new file mode 100644
index 00000000..c21eb74f
--- /dev/null
+++ b/nls/iso8859-9/Compose.pre
@@ -0,0 +1,478 @@
+XCOMM $TOG: fcd8859-15 /main/2 1998/06/17 15:53:45 kaleb $
+XCOMM
+XCOMM ISO 8859-9 (Latin5) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-9,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicirum
+<Multi_key> <space> <greater> : "^" asciicirum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\320" Gbreve
+<Multi_key> <G> <parenleft> : "\320" Gbreve
+<Multi_key> <parenleft> <G> : "\320" Gbreve
+<Multi_key> <G> <breve> : "\320" Gbreve
+<Multi_key> <breve> <G> : "\320" Gbreve
+<Multi_key> <g> <U> : "\360" gbreve
+<Multi_key> <g> <parenleft> : "\360" gbreve
+<Multi_key> <parenleft> <g> : "\360" gbreve
+<Multi_key> <g> <breve> : "\360" gbreve
+<Multi_key> <breve> <g> : "\360" gbreve
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <I> <period> : "\335" Iabovedot
+<Multi_key> <period> <I> : "\335" Iabovedot
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <i> <period> : "\375" idotless
+<Multi_key> <period> <i> : "\375" idotless
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <S> <cedilla> : "\336" Scedilla
+<Multi_key> <S> <comma> : "\336" Scedilla
+<Multi_key> <cedilla> <S> : "\336" Scedilla
+<Multi_key> <cedilla> <s> : "\376" scedilla
+<Multi_key> <comma> <S> : "\336" Scedilla
+<Multi_key> <comma> <s> : "\376" scedilla
+<Multi_key> <s> <cedilla> : "\376" scedilla
+<Multi_key> <s> <comma> : "\376" scedilla
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\264" Zcaron
+<Multi_key> <less> <Z> : "\264" Zcaron
+<Multi_key> <z> <less> : "\270" zcaron
+<Multi_key> <less> <z> : "\270" zcaron
+<Multi_key> <v> <Z> : "\264" Zcaron
+<Multi_key> <v> <z> : "\270" zcaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\320" Gbreve
+<dead_breve> <g> : "\360" gbreve
+<dead_abovedot> <I> : "\335" Iabovedot
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <i> : "\375" idotless
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_caron> <s> : "\250" scaron
+<dead_cedilla> <S> : "\336" Scedilla
+<dead_cedilla> <s> : "\376" scedilla
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_caron> <z> : "\270" zcaron
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-9/XI18N_OBJS b/nls/iso8859-9/XI18N_OBJS
index f20902a6..c6811ebd 100644
--- a/nls/iso8859-9/XI18N_OBJS
+++ b/nls/iso8859-9/XI18N_OBJS
@@ -1,8 +1,7 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for euro locales
+# XI18N objects table for iso8859-9 locale
#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
diff --git a/nls/iso8859-9e/Compose.pre b/nls/iso8859-9e/Compose.pre
new file mode 100644
index 00000000..7ac31462
--- /dev/null
+++ b/nls/iso8859-9e/Compose.pre
@@ -0,0 +1,489 @@
+XCOMM
+XCOMM ISO 8859-9e (Latin??) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/iso8859-9e,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicirum
+<Multi_key> <space> <greater> : "^" asciicirum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <E> <E> : "\306" SCHWA
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <e> <e> : "\346" schwa
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\320" Gbreve
+<Multi_key> <G> <parenleft> : "\320" Gbreve
+<Multi_key> <parenleft> <G> : "\320" Gbreve
+<Multi_key> <G> <breve> : "\320" Gbreve
+<Multi_key> <breve> <G> : "\320" Gbreve
+<Multi_key> <g> <U> : "\360" gbreve
+<Multi_key> <g> <parenleft> : "\360" gbreve
+<Multi_key> <parenleft> <g> : "\360" gbreve
+<Multi_key> <g> <breve> : "\360" gbreve
+<Multi_key> <breve> <g> : "\360" gbreve
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <I> <period> : "\335" Iabovedot
+<Multi_key> <period> <I> : "\335" Iabovedot
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <i> <period> : "\375" idotless
+<Multi_key> <period> <i> : "\375" idotless
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <S> <cedilla> : "\336" Scedilla
+<Multi_key> <S> <comma> : "\336" Scedilla
+<Multi_key> <cedilla> <S> : "\336" Scedilla
+<Multi_key> <cedilla> <s> : "\376" scedilla
+<Multi_key> <comma> <S> : "\336" Scedilla
+<Multi_key> <comma> <s> : "\376" scedilla
+<Multi_key> <s> <cedilla> : "\376" scedilla
+<Multi_key> <s> <comma> : "\376" scedilla
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\327" Yacute
+<Multi_key> <acute> <Y> : "\327" Yacute
+<Multi_key> <Y> <apostrophe> : "\327" Yacute
+<Multi_key> <apostrophe> <Y> : "\327" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\367" yacute
+<Multi_key> <acute> <y> : "\367" yacute
+<Multi_key> <y> <apostrophe> : "\367" yacute
+<Multi_key> <apostrophe> <y> : "\367" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\241" Zcaron
+<Multi_key> <less> <Z> : "\241" Zcaron
+<Multi_key> <z> <less> : "\261" zcaron
+<Multi_key> <less> <z> : "\261" zcaron
+<Multi_key> <v> <Z> : "\241" Zcaron
+<Multi_key> <v> <z> : "\261" zcaron
+<Multi_key> <G> <less> : "\252" Gcaron
+<Multi_key> <less> <G> : "\252" Gcaron
+<Multi_key> <g> <less> : "\272" gcaron
+<Multi_key> <less> <g> : "\272" gcaron
+<Multi_key> <v> <G> : "\252" Gcaron
+<Multi_key> <v> <g> : "\272" gcaron
+<Multi_key> <O> <less> : "\264" Ocaron
+<Multi_key> <less> <O> : "\264" Ocaron
+<Multi_key> <o> <less> : "\275" ocaron
+<Multi_key> <less> <o> : "\275" ocaron
+<Multi_key> <v> <O> : "\264" Ocaron
+<Multi_key> <v> <o> : "\275" ocaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\320" Gbreve
+<dead_breve> <g> : "\360" gbreve
+<dead_abovedot> <I> : "\335" Iabovedot
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <i> : "\375" idotless
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_cedilla> <S> : "\336" Scedilla
+<dead_cedilla> <s> : "\376" scedilla
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\327" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\367" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\241" Zcaron
+<dead_caron> <z> : "\261" zcaron
+<dead_caron> <G> : "\252" Gcaron
+<dead_caron> <g> : "\272" gcaron
+XCOMM End of Sequence Definition
diff --git a/nls/iso8859-9e/XI18N_OBJS b/nls/iso8859-9e/XI18N_OBJS
new file mode 100644
index 00000000..a0d710b6
--- /dev/null
+++ b/nls/iso8859-9e/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-9e locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/iso8859-9e/XLC_LOCALE.pre b/nls/iso8859-9e/XLC_LOCALE.pre
new file mode 100644
index 00000000..8157a2f3
--- /dev/null
+++ b/nls/iso8859-9e/XLC_LOCALE.pre
@@ -0,0 +1,86 @@
+XCOMM $XConsortium: iso8859-9e /main/7 1996/09/28 16:51:50 rws $
+XCOMM XLocale Database Sample for iso8859-9e.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/iso8859-9e,v 1.3 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-9E:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-9E:GR
+ }
+ font {
+ primary ISO8859-9E:GR
+ }
+}
+END XLC_FONTSET
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISO8859-9E
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-9E
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-9E:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-9E:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/ja.JIS/Compose.pre b/nls/ja.JIS/Compose.pre
new file mode 100644
index 00000000..45092b62
--- /dev/null
+++ b/nls/ja.JIS/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ja.JIS Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/ja.JIS,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/ja.JIS/XI18N_OBJS b/nls/ja.JIS/XI18N_OBJS
new file mode 100644
index 00000000..0cf97ee8
--- /dev/null
+++ b/nls/ja.JIS/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.JIS locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ja.JIS/XLC_LOCALE.pre b/nls/ja.JIS/XLC_LOCALE.pre
index 6a8e2bbb..c9f3ca9e 100644
--- a/nls/ja.JIS/XLC_LOCALE.pre
+++ b/nls/ja.JIS/XLC_LOCALE.pre
@@ -1,4 +1,9 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ja.JIS,v 1.4 2001/01/17 19:37:05 dawes Exp $
+XCOMM
+XCOMM
+XCOMM
XCOMM $Xorg: ja.JIS,v 1.3 2000/08/17 19:47:00 cpqbld Exp $
+XCOMM
XCOMM XLocale Database Sample for ja_JP.jis
XCOMM
@@ -34,6 +39,7 @@ fs2 {
}
font {
primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
vertical_rotate all
}
}
diff --git a/nls/ja.S90/XI18N_OBJS b/nls/ja.S90/XI18N_OBJS
new file mode 100644
index 00000000..d8f0fdd9
--- /dev/null
+++ b/nls/ja.S90/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.S90 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ja.SJIS/Compose.pre b/nls/ja.SJIS/Compose.pre
new file mode 100644
index 00000000..9bce23d0
--- /dev/null
+++ b/nls/ja.SJIS/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ja.SJIS Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/ja.SJIS,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/ja.SJIS/XI18N_OBJS b/nls/ja.SJIS/XI18N_OBJS
index 29dffff7..93a68685 100644
--- a/nls/ja.SJIS/XI18N_OBJS
+++ b/nls/ja.SJIS/XI18N_OBJS
@@ -1,10 +1,8 @@
# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
#
-# XI18N objects table for ja locale
+# XI18N objects table for ja.SJIS locale
#
-XLC ja_JP.PCK/xlibi18n_PCK _XlcGenericLoader # XLC_open
+XLC common/xlocale _XlcSjisLoader # XLC_open
XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XIM common/ximlocal _XimpLocalOpenIM # XIM_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ja.SJIS/XLC_LOCALE.pre b/nls/ja.SJIS/XLC_LOCALE.pre
index d5b65e1a..cf6bdc32 100644
--- a/nls/ja.SJIS/XLC_LOCALE.pre
+++ b/nls/ja.SJIS/XLC_LOCALE.pre
@@ -1,4 +1,9 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ja.SJIS,v 1.4 2001/01/17 19:37:05 dawes Exp $
+XCOMM
+XCOMM
+XCOMM
XCOMM $Xorg: ja.SJIS,v 1.3 2000/08/17 19:47:00 cpqbld Exp $
+XCOMM
XCOMM XLocale Database Sample for ja_JP.sjis
XCOMM
@@ -36,6 +41,7 @@ fs2 {
}
font {
primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
vertical_rotate all
}
}
diff --git a/nls/ja.U90/XI18N_OBJS b/nls/ja.U90/XI18N_OBJS
new file mode 100644
index 00000000..8c766a95
--- /dev/null
+++ b/nls/ja.U90/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.U90 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ja/Compose.pre b/nls/ja/Compose.pre
new file mode 100644
index 00000000..b7a95a76
--- /dev/null
+++ b/nls/ja/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ja Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/ja,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/ja/XI18N_OBJS b/nls/ja/XI18N_OBJS
index 50b51fec..81ddc79b 100644
--- a/nls/ja/XI18N_OBJS
+++ b/nls/ja/XI18N_OBJS
@@ -2,10 +2,7 @@
#
# XI18N objects table for ja locale
#
-XLC ja/xlibi18n_ja _XlcGenericLoader # XLC_open
+XLC common/xlocale _XlcEucLoader # XLC_open
XLC common/xlibi18n _XlcGenericLoader # XLC_open
-#XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XIM common/ximlocal _XimpLocalOpenIM # XIM_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ja/XLC_LOCALE.pre b/nls/ja/XLC_LOCALE.pre
index 60c71fee..2fcc6d84 100644
--- a/nls/ja/XLC_LOCALE.pre
+++ b/nls/ja/XLC_LOCALE.pre
@@ -1,4 +1,9 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ja,v 1.4 2001/01/17 19:37:05 dawes Exp $
+XCOMM
+XCOMM
+XCOMM
XCOMM $Xorg: ja,v 1.3 2000/08/17 19:47:00 cpqbld Exp $
+XCOMM
XCOMM XLocale Database Sample for ja_JP.euc
XCOMM
@@ -35,6 +40,7 @@ fs2 {
}
font {
primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
vertical_rotate all
}
}
diff --git a/nls/ja_JP.UTF-8/XI18N_OBJS b/nls/ja_JP.UTF-8/XI18N_OBJS
new file mode 100644
index 00000000..0cd6e275
--- /dev/null
+++ b/nls/ja_JP.UTF-8/XI18N_OBJS
@@ -0,0 +1,9 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja_JP.UTF-8 locale
+#
+# $XFree86: xc/nls/XI18N_OBJS/ja_JP.UTF-8,v 1.1 2002/12/17 03:41:53 dawes Exp $
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ja_JP.UTF-8/XLC_LOCALE.pre b/nls/ja_JP.UTF-8/XLC_LOCALE.pre
new file mode 100644
index 00000000..fcf383f7
--- /dev/null
+++ b/nls/ja_JP.UTF-8/XLC_LOCALE.pre
@@ -0,0 +1,150 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ja_JP.UTF-8,v 1.1 2002/10/17 01:12:57 dawes Exp $
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM ISO10646-1 is put after iso8859-1 to make usually better-looking
+XCOMM iso8859-x fonts are picked up before iso10646-1 fonts.
+XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
+XCOMM in ISO8859-X ranges.
+
+XCOMM fs2 class
+fs2 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+
+XCOMM fs3 class (Kanji)
+fs3 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+
+XCOMM fs4 class (Korean Character)
+fs4 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+
+XCOMM fs5 class (Chinese Han Character)
+fs5 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs6 class (Half Kana)
+fs6 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/nls/ko/Compose.pre b/nls/ko/Compose.pre
new file mode 100644
index 00000000..965289fe
--- /dev/null
+++ b/nls/ko/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM ko Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/ko,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/ko/XI18N_OBJS b/nls/ko/XI18N_OBJS
index 5ee52379..878930a2 100644
--- a/nls/ko/XI18N_OBJS
+++ b/nls/ko/XI18N_OBJS
@@ -2,6 +2,7 @@
#
# XI18N objects table for ko locale
#
+XLC common/xlocale _XlcEucLoader # XLC_open
XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ko/XLC_LOCALE.pre b/nls/ko/XLC_LOCALE.pre
index 8f19ea90..557e6e41 100644
--- a/nls/ko/XLC_LOCALE.pre
+++ b/nls/ko/XLC_LOCALE.pre
@@ -1,6 +1,7 @@
XCOMM $Xorg: ko,v 1.3 2000/08/17 19:47:00 cpqbld Exp $
XCOMM XLocale Database Sample for ko.
XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ko,v 1.3 2001/04/26 18:11:13 tsi Exp $
XCOMM
XCOMM XLC_FONTSET category
@@ -22,7 +23,8 @@ fs1 {
name KSC5601.1987-0:GL
}
font {
- primary KSC5601.1987-0:GL
+ primary KSC5601.1987-0:GL
+ substitute KSC5601.1987-0:GL
}
}
END XLC_FONTSET
diff --git a/nls/ko_KR.UTF-8/XI18N_OBJS b/nls/ko_KR.UTF-8/XI18N_OBJS
new file mode 100644
index 00000000..44f68237
--- /dev/null
+++ b/nls/ko_KR.UTF-8/XI18N_OBJS
@@ -0,0 +1,9 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ko_KR.UTF-8 locale
+#
+# $XFree86: xc/nls/XI18N_OBJS/ko_KR.UTF-8,v 1.1 2002/12/17 03:41:53 dawes Exp $
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/ko_KR.UTF-8/XLC_LOCALE.pre b/nls/ko_KR.UTF-8/XLC_LOCALE.pre
new file mode 100644
index 00000000..a67b90e2
--- /dev/null
+++ b/nls/ko_KR.UTF-8/XLC_LOCALE.pre
@@ -0,0 +1,148 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/ko_KR.UTF-8,v 1.1 2002/10/17 01:12:57 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM ISO10646-1 is put after iso8859-1 to make usually better-looking
+XCOMM iso8859-x fonts are picked up before iso10646-1 fonts.
+XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
+XCOMM in ISO8859-X ranges.
+
+XCOMM fs2 class
+fs2 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+
+
+XCOMM fs3 class (Korean Character)
+fs3 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs4 class (Kanji)
+fs4 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs5 class (Chinese Han Character)
+fs5 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs6 class (Half Kana)
+fs6 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/nls/koi8-c/Compose.pre b/nls/koi8-c/Compose.pre
new file mode 100644
index 00000000..11c1cc74
--- /dev/null
+++ b/nls/koi8-c/Compose.pre
@@ -0,0 +1,123 @@
+XCOMM
+XCOMM koi8-c Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/koi8-c,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+<Multi_key> <space> <space> : "\240" nobreakspace
+
+<Multi_key> <Cyrillic_ghe> <minus> : "\200" Cyrillic_ghe_bar
+<Multi_key> <Cyrillic_GHE> <minus> : "\220" Cyrillic_GHE_bar
+<Multi_key> <Cyrillic_zhe> <comma> : "\201" Cyrillic_zhe_descender
+<Multi_key> <Cyrillic_ZHE> <comma> : "\221" Cyrillic_ZHE_descender
+<Multi_key> <Cyrillic_ka> <comma> : "\202" Cyrillic_ka_descender
+<Multi_key> <Cyrillic_KA> <comma> : "\222" Cyrillic_KA_descender
+<Multi_key> <Cyrillic_ka> <slash> : "\203" Cyrillic_ka_vertstroke
+<Multi_key> <Cyrillic_KA> <slash> : "\223" Cyrillic_KA_vertstroke
+<Multi_key> <Cyrillic_ka> <bar> : "\203" Cyrillic_ka_vertstroke
+<Multi_key> <Cyrillic_KA> <bar> : "\223" Cyrillic_KA_vertstroke
+<Multi_key> <Cyrillic_en> <comma> : "\204" Cyrillic_en_descender
+<Multi_key> <Cyrillic_EN> <comma> : "\224" Cyrillic_EN_descender
+<Multi_key> <Cyrillic_u> <apostrophe> : "\205" Cyrillic_u_straight
+<Multi_key> <Cyrillic_U> <apostrophe> : "\225" Cyrillic_U_straight
+<Multi_key> <Cyrillic_u> <bar> : "\205" Cyrillic_u_straight
+<Multi_key> <Cyrillic_U> <bar> : "\225" Cyrillic_U_straight
+<Multi_key> <Cyrillic_u> <comma> : "\206" Cyrillic_u_straight_bar
+<Multi_key> <Cyrillic_U> <comma> : "\226" Cyrillic_U_straight_bat
+<Multi_key> <Cyrillic_u> <slash> : "\206" Cyrillic_u_straight_bar
+<Multi_key> <Cyrillic_U> <slash> : "\226" Cyrillic_U_straight_bat
+<Multi_key> <Cyrillic_ha> <comma> : "\207" Cyrillic_ha_descender
+<Multi_key> <Cyrillic_HA> <comma> : "\227" Cyrillic_HA_descender
+<Multi_key> <Cyrillic_che> <comma> : "\210" Cyrillic_che_descender
+<Multi_key> <Cyrillic_CHE> <comma> : "\230" Cyrillic_CHE_descender
+<Multi_key> <Cyrillic_che> <slash> : "\211" Cyrillic_che_vertstroke
+<Multi_key> <Cyrillic_CHE> <slash> : "\231" Cyrillic_CHE_vertstroke
+<Multi_key> <Cyrillic_che> <bar> : "\211" Cyrillic_che_vertstroke
+<Multi_key> <Cyrillic_CHE> <bar> : "\231" Cyrillic_CHE_vertstroke
+<Multi_key> <Cyrillic_ha> <apostrophe> : "\212" Cyrillic_shha
+<Multi_key> <Cyrillic_HA> <apostrophe> : "\232" Cyrillic_SHHA
+<Multi_key> <h> <apostrophe> : "\212" Cyrillic_shha
+<Multi_key> <H> <apostrophe> : "\232" Cyrillic_SHHA
+<Multi_key> <h> <h> : "\212" Cyrillic_shha
+<Multi_key> <H> <H> : "\232" Cyrillic_SHHA
+<Multi_key> <Cyrillic_ie> <Cyrillic_ie> : "\213" Cyrillic_schwa
+<Multi_key> <Cyrillic_IE> <Cyrillic_IE> : "\233" Cyrillic_SCHWA
+<Multi_key> <e> <e> : "\213" Cyrillic_schwa
+<Multi_key> <E> <E> : "\233" Cyrillic_SCHWA
+<Multi_key> <Cyrillic_i> <minus> : "\214" Cyrillic_i_macron
+<Multi_key> <Cyrillic_I> <minus> : "\234" Cyrillic_I_macron
+<Multi_key> <Cyrillic_o> <minus> : "\215" Cyrillic_o_bar
+<Multi_key> <Cyrillic_O> <minus> : "\235" Cyrillic_O_bar
+<Multi_key> <Cyrillic_u> <minus> : "\216" Cyrillic_u_macron
+<Multi_key> <Cyrillic_U> <minus> : "\236" Cyrillic_U_macron
+
+<Multi_key> <Cyrillic_de> <Cyrillic_je> : "\241" Serbian_dje
+<Multi_key> <Cyrillic_DE> <Cyrillic_JE> : "\261" Serbian_DJE
+<Multi_key> <Cyrillic_ghe> <Cyrillic_je> : "\242" Macedonia_gje
+<Multi_key> <Cyrillic_GHE> <Cyrillic_JE> : "\262" Macedonia_GJE
+<Multi_key> <Cyrillic_shorti> <Cyrillic_o> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_O> : "\263" Cyrillic_IO
+<Multi_key> <Cyrillic_je> <Cyrillic_o> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_JE> <Cyrillic_O> : "\263" Cyrillic_IO
+<Multi_key> <Cyrillic_ie> <colon> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_IE> <colon> : "\263" Cyrillic_IO
+
+<Multi_key> <Cyrillic_el> <Cyrillic_je> : "\251" Cyrillic_lje
+<Multi_key> <Cyrillic_EL> <Cyrillic_JE> : "\271" Cyrillic_LJE
+<Multi_key> <Cyrillic_en> <Cyrillic_je> : "\252" Cyrillic_nje
+<Multi_key> <Cyrillic_EN> <Cyrillic_JE> : "\272" Cyrillic_NJE
+
+<Multi_key> <Cyrillic_shorti> <Cyrillic_u> : "\300" Cyrillic_yu
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_U> : "\340" Cyrillic_YU
+<Multi_key> <Cyrillic_je> <Cyrillic_u> : "\300" Cyrillic_yu
+<Multi_key> <Cyrillic_JE> <Cyrillic_U> : "\340" Cyrillic_YU
+
+<Multi_key> <Cyrillic_te> <Cyrillic_es> : "\303" Cyrillic_tse
+<Multi_key> <Cyrillic_TE> <Cyrillic_ES> : "\343" Cyrillic_TSE
+
+<Multi_key> <Cyrillic_shorti> <Cyrillic_a> : "\321" Cyrillic_ya
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_A> : "\361" Cyrillic_YA
+<Multi_key> <Cyrillic_je> <Cyrillic_a> : "\321" Cyrillic_ya
+<Multi_key> <Cyrillic_JE> <Cyrillic_A> : "\361" Cyrillic_YA
+
+
+<Multi_key> <Cyrillic_sha> <comma> : "\335" Cyrillic_shcha
+<Multi_key> <Cyrillic_SHA> <comma> : "\375" Cyrillic_SHCHA
+
+
+
+XCOMM End of Sequence Definition
diff --git a/nls/koi8-c/XI18N_OBJS b/nls/koi8-c/XI18N_OBJS
new file mode 100644
index 00000000..a6374f35
--- /dev/null
+++ b/nls/koi8-c/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-c locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/koi8-c/XLC_LOCALE.pre b/nls/koi8-c/XLC_LOCALE.pre
new file mode 100644
index 00000000..4941705d
--- /dev/null
+++ b/nls/koi8-c/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/koi8-c,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for koi8-c.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-C:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-C:GR
+ font KOI8-C:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-C
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-C
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-C:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-C:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/koi8-r/Compose.pre b/nls/koi8-r/Compose.pre
new file mode 100644
index 00000000..62dba3bf
--- /dev/null
+++ b/nls/koi8-r/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM koi8-r Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/koi8-r,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/koi8-r/XI18N_OBJS b/nls/koi8-r/XI18N_OBJS
new file mode 100644
index 00000000..b704fec5
--- /dev/null
+++ b/nls/koi8-r/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-r locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/koi8-r/XLC_LOCALE.pre b/nls/koi8-r/XLC_LOCALE.pre
index 8f7f06a2..59671169 100644
--- a/nls/koi8-r/XLC_LOCALE.pre
+++ b/nls/koi8-r/XLC_LOCALE.pre
@@ -1,6 +1,8 @@
XCOMM $Xorg: koi8-r,v 1.3 2000/08/17 19:47:00 cpqbld Exp $
XCOMM XLocale Database Sample for koi8-r.
XCOMM
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/koi8-r,v 3.4 2001/01/17 19:37:05 dawes Exp $
XCOMM
XCOMM XLC_FONTSET category
@@ -8,8 +10,13 @@ XCOMM
XLC_FONTSET
XCOMM fs0 class (7 bit ASCII)
fs0 {
- charset ISO8859-1:GL
- font KOI8-R:GL; ISO8859-1:GL
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-R:GL
+ substitute ISO8859-1:GL
+ }
}
XCOMM fs1 class
fs1 {
@@ -18,6 +25,19 @@ fs1 {
}
END XLC_FONTSET
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-R
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
XCOMM
XCOMM XLC_XLOCALE category
XCOMM
@@ -34,6 +54,10 @@ wc_encoding_mask \x00008080
wc_shift_bits 8
#endif
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
XCOMM cs0 class
cs0 {
side GL:Default
diff --git a/nls/koi8-u/Compose.pre b/nls/koi8-u/Compose.pre
new file mode 100644
index 00000000..e7434980
--- /dev/null
+++ b/nls/koi8-u/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM koi8-u Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/koi8-u,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/koi8-u/XI18N_OBJS b/nls/koi8-u/XI18N_OBJS
new file mode 100644
index 00000000..dd2c992f
--- /dev/null
+++ b/nls/koi8-u/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-u locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/koi8-u/XLC_LOCALE.pre b/nls/koi8-u/XLC_LOCALE.pre
new file mode 100644
index 00000000..4fb8d321
--- /dev/null
+++ b/nls/koi8-u/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/koi8-u,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for koi8-u.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-U:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-U:GR
+ font KOI8-U:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-U
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-U
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-U:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-U:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/locale.alias.pre b/nls/locale.alias.pre
index ed5009a1..68928833 100644
--- a/nls/locale.alias.pre
+++ b/nls/locale.alias.pre
@@ -1,10 +1,13 @@
-XCOMM $Xorg: locale.alias,v 1.4 2000/12/12 13:00:42 coskrey Exp $
+XCOMM $Xorg: locale.alias,v 1.3 2000/08/17 19:46:48 cpqbld Exp $
XCOMM
XCOMM This file contains alias name of locale.
XCOMM Each alias name is described within one line.
XCOMM The first word is the alias name (simplified locale name)
XCOMM the second word is full locale name.
XCOMM
+XCOMM $XFree86: xc/nls/locale.alias,v 1.62 2003/02/13 02:52:42 dawes Exp $
+XCOMM
+
POSIX: C
POSIX-UTF2: C
C_C.C: C
@@ -13,142 +16,374 @@ C.iso88591: en_US.ISO8859-1
Cextend: en_US.ISO8859-1
Cextend.en: en_US.ISO8859-1
English_United-States.437: C
-XCOMM
+af: af_ZA.ISO8859-1
+af_ZA: af_ZA.ISO8859-1
+af_ZA.iso88591: af_ZA.ISO8859-1
+am: am_ET.UTF-8
ar: ar_AA.ISO8859-6
ar_AA: ar_AA.ISO8859-6
+ar_AA.iso88596: ar_AA.ISO8859-6
+ar_SA: ar_SA.ISO8859-6
ar_SA.iso88596: ar_SA.ISO8859-6
-bg: bg_BG.ISO8859-5
-bg_BG: bg_BG.ISO8859-5
+ar_EG: ar_EG.ISO8859-6
+ar_EG.iso88596: ar_EG.ISO8859-6
+az: az_AZ.ISO8859-9E
+az_AZ: az_AZ.ISO8859-9E
+az_AZ.iso88599e: az_AZ.ISO8859-9E
+a3: a3_AZKOI8-C
+a3_AZ: a3_AZ.KOI8-C
+a3_AZ.koi8c: a3_AZ.KOI8-C
+be: be_BY.CP1251
+be_BY: be_BY.CP1251
+be_BY.cp1251: be_BY.CP1251
+be_BY.microsoftcp1251: be_BY.CP1251
+be_BY.microsoft-cp1251: be_BY.CP1251
+be_BY.MICROSOFT-CP1251: be_BY.CP1251
+bg_BG.iso88595: bg_BY.ISO8859-5
+bg: bg_BG.CP1251
+bg_BG: bg_BG.CP1251
+bg_BG.cp1251: bg_BG.CP1251
+bg_BG.microsoftcp1251: bg_BG.CP1251
+bg_BG.microsoft-cp1251: bg_BG.CP1251
+bg_BG.MICROSOFT-CP1251: bg_BG.CP1251
bg_BG.iso88595: bg_BG.ISO8859-5
+bg_BG.koi8r: bg_BG.KOI8-R
+br: br_FR.ISO8859-1
+br_FR: br_FR.ISO8859-1
+br_FR.iso88591: br_FR.ISO8859-1
+br_FR.iso885914: br_FR.ISO8859-14
+br_FR.iso885915: br_FR.ISO8859-15
+br_FR@euro: br_FR.ISO8859-15
+ca: ca_ES.ISO8859-1
+ca_ES: ca_ES.ISO8859-1
+ca_ES.iso88591: ca_ES.ISO8859-1
+ca_ES.ISO-8859-1: ca_ES.ISO8859-1
+ca_ES.iso885915: ca_ES.ISO8859-15
+ca_ES@euro: ca_ES.ISO8859-15
cs: cs_CZ.ISO8859-2
cs_CS: cs_CZ.ISO8859-2
cs_CS.ISO8859-2: cs_CZ.ISO8859-2
cs_CZ: cs_CZ.ISO8859-2
cs_CZ.iso88592: cs_CZ.ISO8859-2
-cz: cz_CZ.ISO8859-2
-cz_CZ: cz_CZ.ISO8859-2
+cs_CZ.ISO-8859-2: cs_CZ.ISO8859-2
+cs_CZ.ISO_8859-2: cs_CZ.ISO8859-2
+XCOMM cz is old name for cs, should be deleted in the future:
+cz: cs_CZ.ISO8859-2
+cz_CZ: cs_CZ.ISO8859-2
+cy: cy_GB.ISO8859-1
+cy_GB: cy_GB.ISO8859-1
+cy_GB.iso88591: cy_GB.ISO8859-1
+cy_GB.iso885914: cy_GB.ISO8859-14
+cy_GB.iso885915: cy_GB.ISO8859-15
da: da_DK.ISO8859-1
da_DK: da_DK.ISO8859-1
da_DK.88591: da_DK.ISO8859-1
da_DK.88591.en: da_DK.ISO8859-1
da_DK.iso88591: da_DK.ISO8859-1
+da_DK.ISO-8859-1: da_DK.ISO8859-1
da_DK.ISO_8859-1: da_DK.ISO8859-1
+da_DK.iso885915: da_DK.ISO8859-15
de: de_DE.ISO8859-1
de_AT: de_AT.ISO8859-1
+de_AT.iso88591: de_AT.ISO8859-1
de_AT.ISO_8859-1: de_AT.ISO8859-1
+de_AT.iso885915: de_AT.ISO8859-15
+de_AT@euro: de_AT.ISO8859-15
+de_BE: de_BE.ISO8859-1
+de_BE.iso88591: de_BE.ISO8859-1
+de_BE.ISO_8859-1: de_BE.ISO8859-1
+de_BE.ISO-8859-1: de_BE.ISO8859-1
+de_BE.iso885915: de_BE.ISO8859-15
+de_BE.ISO_8859-15: de_BE.ISO8859-15
+de_BE.ISO-8859-15: de_BE.ISO8859-15
+de_BE@euro: de_BE.ISO8859-15
de_CH: de_CH.ISO8859-1
+de_CH.iso88591: de_CH.ISO8859-1
de_CH.ISO_8859-1: de_CH.ISO8859-1
+de_CH.ISO-8859-1: de_CH.ISO8859-1
+de_CH.iso885915: de_CH.ISO8859-15
+de_CH.ISO_8859-15: de_CH.ISO8859-15
+de_CH.ISO-8859-15: de_CH.ISO8859-15
de_DE: de_DE.ISO8859-1
de_DE.88591: de_DE.ISO8859-1
de_DE.88591.en: de_DE.ISO8859-1
de_DE.iso88591: de_DE.ISO8859-1
+de_DE.ISO-8859-1: de_DE.ISO8859-1
de_DE.ISO_8859-1: de_DE.ISO8859-1
+de_DE.iso885915: de_DE.ISO8859-15
+de_DE.ISO-8859-15: de_DE.ISO8859-15
+de_DE.ISO_8859-15: de_DE.ISO8859-15
+de_DE@euro: de_DE.ISO8859-15
+de_LU: de_LU.ISO8859-1
+de_LU.iso88591: de_LU.ISO8859-1
+de_LU.ISO_8859-1: de_LU.ISO8859-1
+de_LU.ISO-8859-1: de_LU.ISO8859-1
+de_LU.iso885915: de_LU.ISO8859-15
+de_LU.ISO_8859-15: de_LU.ISO8859-15
+de_LU.ISO-8859-15: de_LU.ISO8859-15
+de_LU@euro: de_LU.ISO8859-15
GER_DE.8859: de_DE.ISO8859-1
GER_DE.8859.in: de_DE.ISO8859-1
ee: ee_EE.ISO8859-4
+ee_EE: ee_EE.ISO8859-4
+ee_EE.iso88594: ee_EE.ISO8859-4
el: el_GR.ISO8859-7
el_GR: el_GR.ISO8859-7
el_GR.iso88597: el_GR.ISO8859-7
+el_GR.ISO-8859-7: el_GR.ISO8859-7
+el_GR@euro: el_GR.ISO8859-15
en: en_US.ISO8859-1
+en.ISO-8859-1: en_US.ISO8859-1
en_AU: en_AU.ISO8859-1
+en_AU.iso88591: en_AU.ISO8859-1
+en_AU.ISO-8859-1: en_AU.ISO8859-1
en_AU.ISO_8859-1: en_AU.ISO8859-1
en_CA: en_CA.ISO8859-1
+en_CA.iso88591: en_CA.ISO8859-1
+en_CA.ISO-8859-1: en_CA.ISO8859-1
en_CA.ISO_8859-1: en_CA.ISO8859-1
en_GB: en_GB.ISO8859-1
en_GB.88591: en_GB.ISO8859-1
en_GB.88591.en: en_GB.ISO8859-1
en_GB.iso88591: en_GB.ISO8859-1
+en_GB.iso885915: en_GB.ISO8859-15
+en_GB.ISO-8859-1: en_GB.ISO8859-1
en_GB.ISO_8859-1: en_GB.ISO8859-1
en_UK: en_GB.ISO8859-1
ENG_GB.8859: en_GB.ISO8859-1
ENG_GB.8859.in: en_GB.ISO8859-1
en_IE: en_IE.ISO8859-1
+en_IE.iso88591: en_IE.ISO8859-1
+en_IE.iso885915: en_IE.ISO8859-15
+en_IE@euro: en_IE.ISO8859-15
en_NZ: en_NZ.ISO8859-1
+en_NZ.iso88591: en_NZ.ISO8859-1
en_US: en_US.ISO8859-1
en_US.88591: en_US.ISO8859-1
en_US.88591.en: en_US.ISO8859-1
en_US.iso88591: en_US.ISO8859-1
+en_US.iso885915: en_US.ISO8859-15
+en_US.ISO-8859-1: en_US.ISO8859-1
en_US.ISO_8859-1: en_US.ISO8859-1
-en_US.UTF-8: en_US.UTF-8
+#if defined(SVR4) && defined(sun)
+en_US.utf8: en_US.UTF-8
+#endif
+en_ZA: en_ZA.ISO8859-1
+en_ZA.88591: en_ZA.ISO8859-1
+en_ZA.88591.en: en_ZA.ISO8859-1
+en_ZA.iso88591: en_ZA.ISO8859-1
+en_ZA.ISO-8859-1: en_ZA.ISO8859-1
+en_ZA.ISO_8859-1: en_ZA.ISO8859-1
+en_ZA.ISO-8859-15: en_ZA.ISO8859-15
+en_ZA.iso885915: en_ZA.ISO8859-15
+en_ZA.utf8: en_ZA.UTF-8
+eo: eo_XX.ISO8859-3
+eo_EO: eo_EO.ISO8859-3
+eo_EO.ISO8859-3: eo_EO.ISO8859-3
+eo_XX: eo_XX.ISO8859-3
+eo_XX.ISO8859-3: eo_XX.ISO8859-3
es: es_ES.ISO8859-1
es_AR: es_AR.ISO8859-1
+es_AR.iso88591: es_AR.ISO8859-1
es_BO: es_BO.ISO8859-1
+es_BO.iso88591: es_BO.ISO8859-1
es_CL: es_CL.ISO8859-1
+es_CL.iso88591: es_CL.ISO8859-1
es_CO: es_CO.ISO8859-1
+es_CO.iso88591: es_CO.ISO8859-1
es_CR: es_CR.ISO8859-1
+es_CR.iso88591: es_CR.ISO8859-1
+es_DO: es_DO.ISO8859-1
+es_DO.iso88591: es_DO.ISO8859-1
es_EC: es_EC.ISO8859-1
+es_EC.iso88591: es_EC.ISO8859-1
es_ES: es_ES.ISO8859-1
es_ES.88591: es_ES.ISO8859-1
es_ES.88591.en: es_ES.ISO8859-1
es_ES.iso88591: es_ES.ISO8859-1
+es_ES.ISO-8859-1: es_ES.ISO8859-1
es_ES.ISO_8859-1: es_ES.ISO8859-1
+es_ES.iso885915: es_ES.ISO8859-15
+es_ES@euro: es_ES.ISO8859-15
es_GT: es_GT.ISO8859-1
+es_GT.iso88591: es_GT.ISO8859-1
+es_HN: es_HN.ISO8859-1
+es_HN.iso88591: es_HN.ISO8859-1
es_MX: es_MX.ISO8859-1
+es_MX.iso88591: es_MX.ISO8859-1
es_NI: es_NI.ISO8859-1
+es_NI.iso88591: es_NI.ISO8859-1
es_PA: es_PA.ISO8859-1
+es_PA.iso88591: es_PA.ISO8859-1
+es_PA.iso885915: es_PA.ISO8859-15
es_PE: es_PE.ISO8859-1
+es_PE.iso88591: es_PE.ISO8859-1
+es_PE.iso885915: es_PE.ISO8859-15
+es_PR: es_PR.ISO8859-1
+es_PR.iso88591: es_PR.ISO8859-1
es_PY: es_PY.ISO8859-1
+es_PY.iso88591: es_PY.ISO8859-1
+es_PY.iso885915: es_PY.ISO8859-15
es_SV: es_SV.ISO8859-1
+es_SV.iso88591: es_SV.ISO8859-1
+es_SV.iso885915: es_SV.ISO8859-15
es_UY: es_UY.ISO8859-1
+es_UY.iso88591: es_UY.ISO8859-1
+es_UY.iso885915: es_UY.ISO8859-15
es_VE: es_VE.ISO8859-1
+es_VE.iso88591: es_VE.ISO8859-1
+es_VE.iso885915: es_VE.ISO8859-15
#if defined(SVR4) && defined(sun)
XCOMM Sun Solaris 2.6 has erroneously specified Estonian as a Latin-1
XCOMM language; however this is clearly incorrect according to ISO8859.
#endif
-et: et_EE.ISO8859-4
-et_EE: et_EE.ISO8859-4
-fi: fi_FI.ISO8859-1
-fi_FI: fi_FI.ISO8859-1
+XCOMM According to Estonian local standards, ISO8859-4 is not recommended
+XCOMM charset. EVS8:2000 specifies ISO8859-15 as base charset.
+et: et_EE.ISO8859-15
+et_EE: et_EE.ISO8859-15
+et_EE.iso88591: et_EE.ISO8859-1
+et_EE.ISO-8859-1: et_EE.ISO8859-1
+et_EE.iso88594: et_EE.ISO8859-4
+et_EE.iso885913: et_EE.ISO8859-13
+et_EE.iso885915: et_EE.ISO8859-15
+eu: eu_ES.ISO8859-1
+eu_ES: eu_ES.ISO8859-1
+eu_ES.iso88591: eu_ES.ISO8859-1
+eu_ES.iso885915: eu_ES.ISO8859-15
+eu_ES@euro: eu_ES.ISO8859-15
+fa: fa_IR.UTF-8
+fa_IR: fa_IR.UTF-8
+fa_IR.isiri3342: fa_IR.ISIRI-3342
+fa_IR.utf8: fa_IR.UTF-8
+fi: fi_FI.ISO8859-15
+fi_FI: fi_FI.ISO8859-15
fi_FI.88591: fi_FI.ISO8859-1
fi_FI.88591.en: fi_FI.ISO8859-1
fi_FI.iso88591: fi_FI.ISO8859-1
+fi_FI.ISO-8859-1: fi_FI.ISO8859-1
fi_FI.ISO_8859-1: fi_FI.ISO8859-1
+fi_FI.iso885915: fi_FI.ISO8859-15
+fi_FI@euro: fi_FI.ISO8859-15
+fi_FI.UTF-8@euro: fi_FI.UTF-8
+fo: fo_FO.ISO8859-1
+fo_FO: fo_FO.ISO8859-1
+fo_FO.iso88591: fo_FO.ISO8859-1
+fo_FO.iso885915: fo_FO.ISO8859-15
fr: fr_FR.ISO8859-1
fr_BE: fr_BE.ISO8859-1
fr_BE.88591: fr_BE.ISO8859-1
fr_BE.88591.en: fr_BE.ISO8859-1
fr_BE.ISO_8859-1: fr_BE.ISO8859-1
+fr_BE.iso885915: fr_BE.ISO8859-15
+fr_BE@euro: fr_BE.ISO8859-15
fr_CA: fr_CA.ISO8859-1
fr_CA.88591: fr_CA.ISO8859-1
fr_CA.88591.en: fr_CA.ISO8859-1
fr_CA.iso88591: fr_CA.ISO8859-1
fr_CA.ISO_8859-1: fr_CA.ISO8859-1
+fr_CA.iso885915: fr_CA.ISO8859-15
fr_CH: fr_CH.ISO8859-1
fr_CH.88591: fr_CH.ISO8859-1
fr_CH.88591.en: fr_CH.ISO8859-1
fr_CH.ISO_8859-1: fr_CH.ISO8859-1
+fr_CH.iso885915: fr_CH.ISO8859-15
fr_FR: fr_FR.ISO8859-1
fr_FR.88591: fr_FR.ISO8859-1
fr_FR.88591.en: fr_FR.ISO8859-1
fr_FR.iso88591: fr_FR.ISO8859-1
+fr_FR.ISO-8859-1: fr_FR.ISO8859-1
fr_FR.ISO_8859-1: fr_FR.ISO8859-1
+fr_FR.iso885915: fr_FR.ISO8859-15
+fr_FR@euro: fr_FR.ISO8859-15
+fr_LU: fr_LU.ISO8859-1
+fr_LU.88591: fr_LU.ISO8859-1
+fr_LU.88591.en: fr_LU.ISO8859-1
+fr_LU.iso88591: fr_LU.ISO8859-1
+fr_LU.ISO-8859-1: fr_LU.ISO8859-1
+fr_LU.ISO_8859-1: fr_LU.ISO8859-1
+fr_LU.iso885915: fr_LU.ISO8859-15
+fr_LU@euro: fr_LU.ISO8859-15
FRE_FR.8859: fr_FR.ISO8859-1
FRE_FR.8859.in: fr_FR.ISO8859-1
+ga: ga_IE.ISO8859-1
+ga_IE: ga_IE.ISO8859-1
+ga_IE.iso88591: ga_IE.ISO8859-1
+ga_IE.iso885914: ga_IE.ISO8859-14
+ga_IE.iso885915: ga_IE.ISO8859-15
+ga_IE@euro: ga_IE.ISO8859-15
+gd: gd_GB.ISO8859-1
+gd_GB: gd_GB.ISO8859-1
+gd_GB.iso88591: gd_GB.ISO8859-1
+gd_GB.iso885914: gd_GB.ISO8859-14
+gd_GB.iso885915: gd_GB.ISO8859-15
+gl: gl_ES.ISO8859-1
+gl_ES: gl_ES.ISO8859-1
+gl_ES.iso88591: gl_ES.ISO8859-1
+gl_ES.ISO-8859-1: gl_ES.ISO8859-1
+gl_ES.iso885915: gl_ES.ISO8859-15
+gl_ES@euro: gl_ES.ISO8859-15
+gv: gv_GB.ISO8859-1
+gv_GB: gv_GB.ISO8859-1
+gv_GB.iso88591: gv_GB.ISO8859-1
+gv_GB.iso885914: gv_GB.ISO8859-14
+gv_GB.iso885915: gv_GB.ISO8859-15
+he: he_IL.ISO8859-8
+he_IL: he_IL.ISO8859-8
+he_IL.iso88598: he_IL.ISO8859-8
+he_IL.cp1255: he_IL.CP1255
+he_IL.microsoftcp1255: he_IL.CP1255
+he_IL.microsoft-cp1255: he_IL.CP1255
+he_IL.MICROSOFT-CP1255: he_IL.CP1255
+hi: hi_IN.ISCII-DEV
+hi_IN: hi_IN.ISCII-DEV
+hi_IN.isciidev: hi_IN.ISCII-DEV
hr: hr_HR.ISO8859-2
hr_HR: hr_HR.ISO8859-2
hr_HR.iso88592: hr_HR.ISO8859-2
+hr_HR.ISO-8859-2: hr_HR.ISO8859-2
hr_HR.ISO_8859-2: hr_HR.ISO8859-2
hu: hu_HU.ISO8859-2
hu_HU: hu_HU.ISO8859-2
hu_HU.iso88592: hu_HU.ISO8859-2
+hu_HU.ISO-8859-2: hu_HU.ISO8859-2
+hy: hy_AM.ARMSCII-8
+hy_AM: hy_AM.ARMSCII-8
+hy_AM.armscii8: hy_AM.ARMSCII-8
+id: id_ID.ISO8859-1
+id_ID: id_ID.ISO8859-1
+id_ID.iso88591: id_ID.ISO8859-1
+XCOMM in was the old iso code for indonesian (now id):
+XCOMM those lines should be deleted in a near future:
+in: id_ID.ISO8859-1
+in_ID: id_ID.ISO8859-1
is: is_IS.ISO8859-1
is_IS: is_IS.ISO8859-1
is_IS.iso88591: is_IS.ISO8859-1
+is_IS.ISO-8859-1: is_IS.ISO8859-1
is_IS.ISO_8859-1: is_IS.ISO8859-1
+is_IS.iso885915: is_IS.ISO8859-15
it: it_IT.ISO8859-1
it_CH: it_CH.ISO8859-1
+it_CH.iso88591: it_CH.ISO8859-1
it_CH.ISO_8859-1: it_CH.ISO8859-1
+it_CH.iso885915: it_CH.ISO8859-15
it_IT: it_IT.ISO8859-1
it_IT.88591: it_IT.ISO8859-1
it_IT.88591.en: it_IT.ISO8859-1
it_IT.iso88591: it_IT.ISO8859-1
+it_IT.ISO-8859-1: it_IT.ISO8859-1
it_IT.ISO_8859-1: it_IT.ISO8859-1
-iw: iw_IL.ISO8859-8
-iw_IL: iw_IL.ISO8859-8
-iw_IL.iso88598: iw_IL.ISO8859-8
-ja: ja_JP.eucJP
-ja.JIS: ja_JP.JIS7
-ja.SJIS: ja_JP.SJIS
+it_IT.iso885915: it_IT.ISO8859-15
+it_IT@euro: it_IT.ISO8859-15
+iu: iu_CA.NUNACOM-8
+iu_CA: iu_CA.NUNACOM-8
+iu_CA.nunacom8: iu_CA.NUNACOM-8
+XCOMM iw was the old iso code for hebrew (now he)
+XCOMM those lines should be deleted in a near future
+iw: he_IL.ISO8859-8
+iw_IL: he_IL.ISO8859-8
+iw_IL.iso88598: he_IL.ISO8859-8
+iw_IL.ISO-8859-8: iw_IL.ISO8859-8
#ifndef __uxp__
ja_JP: ja_JP.eucJP
#else /* __uxp__ */
@@ -156,97 +391,311 @@ ja_JP: ja_JP.U90
ja_JP.U90: ja_JP.U90
ja_JP.S90: ja_JP.S90
#endif /* __uxp__ */
+ja: ja_JP.eucJP
+ja.JIS: ja_JP.JIS7
+ja.SJIS: ja_JP.SJIS
+ja_JP: ja_JP.eucJP
ja_JP.ujis: ja_JP.eucJP
-ja_JP.eucJP: ja_JP.eucJP
+ja_JP.eucjp: ja_JP.eucJP
Jp_JP: ja_JP.eucJP
ja_JP.AJEC: ja_JP.eucJP
ja_JP.EUC: ja_JP.eucJP
+ja_JP.EUC-JP: ja_JP.eucJP
+ja_JP.EUC_JP: ja_JP.eucJP
ja_JP.ISO-2022-JP: ja_JP.JIS7
ja_JP.JIS: ja_JP.JIS7
ja_JP.jis7: ja_JP.JIS7
ja_JP.mscode: ja_JP.SJIS
ja_JP.SJIS: ja_JP.SJIS
+ka: ka_GE.GEORGIAN-ACADEMY
+ka_GE: ka_GE.GEORGIAN-ACADEMY
+ka_GE.georgianacademy: ka_GE.GEORGIAN-ACADEMY
+ka_GE.georgianrs: ka_GE.GEORGIAN-ACADEMY
+ka_GE.georgianps: ka_GE.GEORGIAN-PS
+kl: kl_GL.ISO8859-1
+kl_GL: kl_GL.ISO8859-1
+kl_GL.iso88591: kl_GL.ISO8859-1
+kl_GL.iso885915: kl_GL.ISO8859-15
ko: ko_KR.eucKR
ko_KR: ko_KR.eucKR
ko_KR.EUC: ko_KR.eucKR
ko_KR.euc: ko_KR.eucKR
+ko_KR.euckr: ko_KR.eucKR
+ko_KR.utf8: ko_KR.UTF-8
+kw: kw_GB.ISO8859-1
+kw_GB: kw_GB.ISO8859-1
+kw_GB.iso88591: kw_GB.ISO8859-1
+kw_GB.iso885914: kw_GB.ISO8859-14
+kw_GB.iso885915: kw_GB.ISO8859-15
+lo: lo_LA.MULELAO-1
+lo_LA: lo_LA.MULELAO-1
+lo_LA.cp1133: lo_LA.IBM-CP1133
+lo_LA.ibmcp1133: lo_LA.IBM-CP1133
+lo_LA.mulelao1: lo_LA.MULELAO-1
#if defined(__FreeBSD__)
XCOMM most locales in FreeBSD 2.1.[56] do not work, allow use of FreeBSD's
XCOMM generic latin-1 locale name. N.B. "lt" is a bad code to use for a
XCOMM generic Latin-1 locale anyway because it is the country code for
-XCOMM Lithuania, which by default uses Latin-4.
+XCOMM Lithuania, which by default uses Latin-7 (ISO-8859-13).
lt_LN.ISO_8859-1: lt_LN.ISO8859-1
#endif
-lt: lt_LT.ISO8859-4
-lv: lv_LV.ISO8859-4
+lt: lt_LT.ISO8859-13
+lt_LT: lt_LT.ISO8859-13
+lt_LT.iso88594: lt_LT.ISO8859-4
+lt_LT.ISO_8859-4: lt_LT.ISO8859-4
+lt_LT.iso885913: lt_LT.ISO8859-13
+lt_LT.ISO-8859-13: lt_LT.ISO8859-13
+lt_LT.ISO_8859-13: lt_LT.ISO8859-13
+lv: lv_LV.ISO8859-13
+lv_LV: lv_LV.ISO8859-13
+lv_LV.iso88594: lv_LV.ISO8859-4
+lv_LV.iso885913: lv_LV.ISO8859-13
+lv_LV.ISO-8859-13: lv_LV.ISO8859-13
+lv_LV.ISO_8859-13: lv_LV.ISO8859-13
+mi: mi_NZ.ISO8859-1
+mi_NZ: mi_NZ.ISO8859-1
+mi_NZ.iso88591: mi_NZ.ISO8859-1
mk: mk_MK.ISO8859-5
mk_MK: mk_MK.ISO8859-5
+mk_MK.iso88595: mk_MK.ISO8859-5
+mk_MK.cp1251: mk_MK.CP1251
+mk_MK.microsoftcp1251: mk_MK.CP1251
+mk_MK.microsoft-cp1251: mk_MK.CP1251
+mk_MK.MICROSOFT-CP1251: mk_MK.CP1251
+mk_MK.utf8: mk_MK.UTF-8
+ms: ms_MY.ISO8859-1
+ms_MY: ms_MY.ISO8859-1
+ms_MY.iso88591: ms_MY.ISO8859-1
+mt: mt_MT.ISO8859-3
+mt_MT: mt_MT.ISO8859-3
+mt_MT.ISO8859-3: mt_MT.ISO8859-3
nl: nl_NL.ISO8859-1
nl_BE: nl_BE.ISO8859-1
nl_BE.88591: nl_BE.ISO8859-1
nl_BE.88591.en: nl_BE.ISO8859-1
+nl_BE.iso88591: nl_BE.ISO8859-1
nl_BE.ISO_8859-1: nl_BE.ISO8859-1
+nl_BE.iso885915: nl_BE.ISO8859-15
+nl_BE@euro: nl_BE.ISO8859-15
nl_NL: nl_NL.ISO8859-1
nl_NL.88591: nl_NL.ISO8859-1
nl_NL.88591.en: nl_NL.ISO8859-1
nl_NL.iso88591: nl_NL.ISO8859-1
+nl_NL.ISO-8859-1: nl_NL.ISO8859-1
nl_NL.ISO_8859-1: nl_NL.ISO8859-1
+nl_NL.iso885915: nl_NL.ISO8859-15
+nl_NL@euro: nl_NL.ISO8859-15
no: no_NO.ISO8859-1
+nb: nb_NO.ISO8859-1
+nn: nn_NO.ISO8859-1
+ny: ny_NO.ISO8859-1
no_NO: no_NO.ISO8859-1
+nb_NO: nb_NO.ISO8859-1
+nn_NO: nn_NO.ISO8859-1
+ny_NO: ny_NO.ISO8859-1
no_NO.88591: no_NO.ISO8859-1
+nb_NO.88591: nb_NO.ISO8859-1
+nn_NO.88591: nn_NO.ISO8859-1
+ny_NO.88591: ny_NO.ISO8859-1
no_NO.88591.en: no_NO.ISO8859-1
no_NO.iso88591: no_NO.ISO8859-1
-no_NO.ISO_8859-1: no_NO.ISO8859-1
+no_NO.ISO-8859-1: no_NO.ISO8859-1
+nb_NO.ISO-8859-1: nb_NO.ISO8859-1
+nn_NO.ISO_8859-1: nn_NO.ISO8859-1
+ny_NO.ISO_8859-1: ny_NO.ISO8859-1
+no_NO.iso885915: no_NO.ISO8859-15
+nb_NO.iso885915: nb_NO.ISO8859-15
+nn_NO.iso885915: nn_NO.ISO8859-15
+ny_NO.iso885915: ny_NO.ISO8859-15
+no@nynorsk: ny_NO.ISO8859-1
+nynorsk: nn_NO.ISO8859-1
+oc: oc_FR.ISO8859-1
+oc_FR: oc_FR.ISO8859-1
+oc_FR.iso88591: oc_FR.ISO8859-1
+oc_FR.iso885915: oc_FR.ISO8859-15
+oc_FR@euro: oc_FR.ISO8859-15
+pd: pd_US.ISO8859-1
+pd_DE: pd_DE.ISO8859-1
+pd_US: pd_US.ISO8859-1
+pd_DE.iso88591: pd_DE.ISO8859-1
+pd_US.iso88591: pd_US.ISO8859-1
+pd_DE.iso885915: pd_DE.ISO8859-15
+pd_US.iso885915: pd_US.ISO8859-15
+ph: ph_PH.ISO8859-1
+ph_PH: ph_PH.ISO8859-1
+ph_PH.iso88591: ph_PH.ISO8859-1
pl: pl_PL.ISO8859-2
pl_PL: pl_PL.ISO8859-2
pl_PL.iso88592: pl_PL.ISO8859-2
+pl_PL.ISO-8859-2: pl_PL.ISO8859-2
+pp: pp_AN.ISO8859-1
+pp_AN: pp_AN.ISO8859-1
+pp_AN.iso88591: pp_AN.ISO8859-1
pt: pt_PT.ISO8859-1
pt_BR: pt_BR.ISO8859-1
+pt_BR.88591: pt_BR.ISO8859-1
+pt_BR.88591.en: pt_BR.ISO8859-1
+pt_BR.iso88591: pt_BR.ISO8859-1
+pt_BR.ISO-8859-1: pt_BR.ISO8859-1
+pt_BR.ISO_8859-1: pt_BR.ISO8859-1
+pt_BR.iso885915: pt_BR.ISO8859-15
pt_PT: pt_PT.ISO8859-1
pt_PT.88591: pt_PT.ISO8859-1
pt_PT.88591.en: pt_PT.ISO8859-1
pt_PT.iso88591: pt_PT.ISO8859-1
+pt_PT.ISO-8859-1: pt_PT.ISO8859-1
pt_PT.ISO_8859-1: pt_PT.ISO8859-1
+pt_PT.iso885915: pt_PT.ISO8859-15
+pt_PT@euro: pt_PT.ISO8859-15
+pt_PT.UTF-8@euro: pt_PT.UTF-8
ro: ro_RO.ISO8859-2
ro_RO: ro_RO.ISO8859-2
ro_RO.iso88592: ro_RO.ISO8859-2
-ru: ru_RU.ISO8859-5
-ru_RU: ru_RU.ISO8859-5
+ro_RO.ISO-8859-2: ro_RO.ISO8859-2
+ru: ru_RU.KOI8-R
+ru_RU: ru_RU.KOI8-R
ru_RU.iso88595: ru_RU.ISO8859-5
-ru_SU: ru_RU.ISO8859-5
+ru_RU.ISO-8859-5: ru_RU.ISO8859-5
+ru_RU.koi8r: ru_RU.KOI8-R
+ru_RU.cp1251: ru_RU.CP1251
+ru_RU.microsoftcp1251: ru_RU.CP1251
+ru_RU.microsoft-cp1251: ru_RU.CP1251
+ru_RU.MICROSOFT-CP1251: ru_RU.CP1251
+#if defined(INCLUDE_ru_SU)
+XCOMM ru_SU is redundant now
+ru_SU: ru_RU.KOI8-R
ru_SU.ISO8859-5: ru_RU.ISO8859-5
ru_SU.KOI8-R: ru_RU.KOI8-R
+#endif
+ru_UA: ru_UA.KOI8-U
+ru_UA.koi8u: ru_UA.KOI8-U
+ru_UA.cp1251: ru_UA.CP1251
+ru_UA.microsoftcp1251: ru_UA.CP1251
+ru_UA.microsoft-cp1251: ru_UA.CP1251
+ru_UA.MICROSOFT-CP1251: ru_UA.CP1251
+se_NO: se_NO.UTF-8
+se_NO.utf8: se_NO.UTF-8
sh: sh_YU.ISO8859-2
sh_HR.iso88592: sh_HR.ISO8859-2
sh_YU: sh_YU.ISO8859-2
sh_SP: sh_YU.ISO8859-2
sk: sk_SK.ISO8859-2
sk_SK: sk_SK.ISO8859-2
-sk_sK.iso88592: sk_SK.ISO8859-2
-sl: sl_CS.ISO8859-2
-sl_CS: sl_CS.ISO8859-2
+sk_SK.iso88592: sk_SK.ISO8859-2
+sk_SK.ISO-8859-2: sk_SK.ISO8859-2
+sl: sl_SI.ISO8859-2
sl_SI: sl_SI.ISO8859-2
sl_SI.iso88592: sl_SI.ISO8859-2
+sl_SI.ISO-8859-2: sl_SI.ISO8859-2
sp: sp_YU.ISO8859-5
sp_YU: sp_YU.ISO8859-5
+sq: sq_AL.ISO8859-2
+sq_AL: sq_AL.ISO8859-2
+sq_AL.iso88592: sq_AL.ISO8859-2
sr_SP: sr_SP.ISO8859-2
+sr: sr_YU.ISO8859-5
+sr_YU: sr_YU.ISO8859-5
+sr_YU.iso88592: sr_YU.ISO8859-2
+sr_YU.iso88595: sr_YU.ISO8859-5
+sr@cyrillic: sr_YU.ISO8859-5
+sr_YU@cyrillic: sr_YU.ISO8859-5
+sr_YU.iso88595@cyrillic: sr_YU.ISO8859-5
+sr_YU.ISO8859-5@cyrillic: sr_YU.ISO8859-5
+sr_YU.cp1251@cyrillic: sr_YU.CP1251
+sr_YU.CP1251@cyrillic: sr_YU.CP1251
+sr_YU.microsoftcp1251@cyrillic: sr_YU.CP1251
+sr_YU.microsoft-cp1251@cyrillic: sr_YU.CP1251
+sr_YU.MICROSOFT-CP1251@cyrillic: sr_YU.CP1251
+sr_YU.UTF-8@cyrillic: sr_YU.UTF-8
sv: sv_SE.ISO8859-1
+sv_FI: sv_FI.ISO8859-1
+sv_FI.iso88591: sv_FI.ISO8859-1
+sv_FI.iso885915: sv_FI.ISO8859-15
+sv_FI@euro: sv_FI.ISO8859-15
sv_SE: sv_SE.ISO8859-1
sv_SE.88591: sv_SE.ISO8859-1
sv_SE.88591.en: sv_SE.ISO8859-1
sv_SE.iso88591: sv_SE.ISO8859-1
+sv_SE.ISO-8859-1: sv_SE.ISO8859-1
sv_SE.ISO_8859-1: sv_SE.ISO8859-1
-th_TH: th_TH.TACTIS
-th_TH.tis620: th_TH.TACTIS
+sv_SE.iso885915: sv_SE.ISO8859-15
+sv_SE@euro: sv_SE.ISO8859-15
+ta: ta_IN.TSCII-0
+ta_IN: ta_IN.TSCII-0
+ta_IN.tscii: ta_IN.TSCII-0
+ta_IN.tscii0: ta_IN.TSCII-0
+tg: tg_TJ.KOI8-C
+tg_TJ: tg_TJ.KOI8-C
+tg_TJ.koi8c: tg_TJ.KOI8-C
+th: th_TH.ISO8859-11
+th_TH: th_TH.ISO8859-11
+th_TH.ISO-8859-11: th_TH.ISO8859-11
+th_TH.tis620: th_TH.TIS620
+th_TH.TIS-620: th_TH.TIS620
+th_TH.TACTIS: th_TH.TIS620
+tl: tl_PH.ISO8859-1
+tl_PH: tl_PH.ISO8859-1
+tl_PH.iso88591: tl_PH.ISO8859-1
tr: tr_TR.ISO8859-9
tr_TR: tr_TR.ISO8859-9
tr_TR.iso88599: tr_TR.ISO8859-9
-zh: zh_CN.eucCN
-zh_CN: zh_CN.eucCN
+tr_TR.ISO-8859-9: tr_TR.ISO8859-9
+tr_TR.utf8: tr_TR.UTF-8
+tt: tt_RU.TATAR-CYR
+tt_RU: tt_RU.TATAR-CYR
+tt_RU.tatarcyr: tt_RU.TATAR-CYR
+tt_RU.koi8c: tt_RU.KOI8-C
+uk: uk_UA.KOI8-U
+uk_UA: uk_UA.KOI8-U
+uk_UA.iso88595: uk_UA.ISO8859-5
+uk_UA.koi8u: uk_UA.KOI8-U
+uk_UA.cp1251: uk_UA.CP1251
+uk_UA.microsoftcp1251: uk_UA.CP1251
+uk_UA.microsoft-cp1251: uk_UA.CP1251
+uk_UA.MICROSOFT-CP1251: uk_UA.CP1251
+ur: ur_PK.CP1256
+ur_PK: ur_PK.CP1256
+ur_PK.cp1256: ur_PK.CP1256
+ur_PK.microsoftcp1256: ur_PK.CP1256
+ur_PK.microsoft-cp1256: ur_PK.CP1256
+ur_PK.MICROSOFT-CP1256: ur_PK.CP1256
+vi: vi_VN.TCVN
+vi_VN: vi_VN.TCVN
+vi_VN.tcvn: vi_VN.TCVN
+vi_VN.tcvn5712: vi_VN.TCVN
+vi_VN.viscii: vi_VN.VISCII
+vi_VN.viscii111: vi_VN.VISCII
+wa: wa_BE.ISO8859-1
+wa_BE: wa_BE.ISO8859-1
+wa_BE.iso88591: wa_BE.ISO8859-1
+wa_BE.iso885915: wa_BE.ISO8859-15
+wa_BE@euro: wa_BE.ISO8859-15
+yi: yi_US.CP1255
+yi_US: yi_US.CP1255
+yi_US.cp1255: yi_US.CP1255
+yi_US.microsoftcp1255: yi_US.CP1255
+yi_US.microsoft-cp1255: yi_US.CP1255
+yi_US.MICROSOFT-CP1255: yi_US.CP1255
+zh_CN: zh_CN.gbk
+zh_CN.Big5: zh_TW.big5
zh_CN.EUC: zh_CN.eucCN
-zh_TW: zh_TW.eucTW
+zh_CN.GB2312: zh_CN.eucCN
+zh_CN.GBK: zh_CN.gbk
+zh_CN.big5: zh_TW.big5
+zh_CN.euc: zh_CN.eucCN
+zh_CN.gb2312: zh_CN.eucCN
+zh_HK: zh_HK.big5hkscs
+zh_HK.Big5hkscs: zh_HK.big5hkscs
+zh_HK.Big5-hkscs: zh_HK.big5hkscs
+zh_HK.Big5_hkscs: zh_HK.big5hkscs
+zh_HK.Big5HKSCS: zh_HK.big5hkscs
+zh_HK.BIG5-HKSCS: zh_HK.big5hkscs
+zh_HK.BIG5_HKSCS: zh_HK.big5hkscs
+zh_HK.Big5: zh_HK.big5
+zh_TW: zh_TW.big5
+zh_TW.Big5: zh_TW.big5
zh_TW.EUC: zh_TW.eucTW
-zh_CN.big5: zh_TW.eucTW
+
XCOMM The following locale names are used in SCO 3.0
english_uk.8859: en_GB.ISO8859-1
english_us.8859: en_US.ISO8859-1
@@ -258,45 +707,71 @@ spanish_spain.8859: es_ES.ISO8859-1
XCOMM The following locale names are used in HPUX 9.x
american.iso88591: en_US.ISO8859-1
arabic.iso88596: ar_AA.ISO8859-6
-bulgarian: bg_BG.ISO8859-5
+bokmal: nb_NO.ISO8859-1
+bokmål: nb_NO.ISO8859-1
+bulgarian: bg_BG.CP1251
c-french.iso88591: fr_CA.ISO8859-1
+catalan: ca_ES.ISO8859-1
chinese-s: zh_CN.eucCN
chinese-t: zh_TW.eucTW
croatian: hr_HR.ISO8859-2
-czech: cs_CS.ISO8859-2
+czech: cs_CZ.ISO8859-2
+danish: da_DK.ISO8859-1
+dansk: da_DK.ISO8859-1
danish.iso88591: da_DK.ISO8859-1
+deutsch: de_DE.ISO8859-1
+dutch: nl_NL.ISO8859-1
dutch.iso88591: nl_BE.ISO8859-1
+eesti: et_EE.ISO8859-1
english.iso88591: en_EN.ISO8859-1
+estonian: et_EE.ISO8859-1
+finnish: fi_FI.ISO8859-1
finnish.iso88591: fi_FI.ISO8859-1
+français: fr_FR.ISO8859-1
+french: fr_FR.ISO8859-1
french.iso88591: fr_CH.ISO8859-1
+galego: gl_ES.ISO8859-1
+galician: gl_ES.ISO8859-1
+german: de_DE.ISO8859-1
german.iso88591: de_CH.ISO8859-1
+greek: el_GR.ISO8859-7
greek.iso88597: el_GR.ISO8859-7
+hebrew: iw_IL.ISO8859-8
hebrew.iso88598: iw_IL.ISO8859-8
+hrvatski: hr_HR.ISO8859-2
hungarian: hu_HU.ISO8859-2
icelandic.iso88591: is_IS.ISO8859-1
+icelandic: is_IS.ISO8859-1
+italian: it_IT.ISO8859-1
italian.iso88591: it_IT.ISO8859-1
-#if ! (defined(SVR4) && defined(sun))
-japanese: ja_JP.SJIS
-#else
japanese: ja_JP.eucJP
-#endif
japanese.euc: ja_JP.eucJP
+japanese.sjis: ja_JP.SJIS
korean: ko_KR.eucKR
+korean.euc: ko_KR.eucKR
+lithuanian: lt_LT.ISO8859-13
+norwegian: no_NO.ISO8859-1
norwegian.iso88591: no_NO.ISO8859-1
polish: pl_PL.ISO8859-2
+portuguese: pt_PT.ISO8859-1
portuguese.iso88591: pt_PT.ISO8859-1
+romanian: ro_RO.ISO8859-2
rumanian: ro_RO.ISO8859-2
-russian: ru_SU.ISO8859-5
+russian: ru_RU.ISO8859-5
serbocroatian: sh_YU.ISO8859-2
slovak: sk_SK.ISO8859-2
-slovene: sl_CS.ISO8859-2
+slovene: sl_SI.ISO8859-2
+slovenian: sl_SI.ISO8859-2
+spanish: es_ES.ISO8859-1
spanish.iso88591: es_ES.ISO8859-1
+swedish: sv_SE.ISO8859-1
swedish.iso88591: sv_SE.ISO8859-1
+turkish: tr_TR.ISO8859-9
turkish.iso88599: tr_TR.ISO8859-9
-univ.utf8: en_US.utf
+thai: th_TH.ISO8859-11
+univ.utf8: en_US.UTF-8
XCOMM Digital Unix utf
-universal.utf8@ucs4: en_US.utf
-XCOMM Solaris 2.6
+universal.utf8@ucs4: en_US.UTF-8
XCOMM Solaris and SunOS have iso_8859_1 LC_CTYPES to augment LANG=C
iso_8859_1: en_US.ISO8859-1
#ifdef WIN32
@@ -358,7 +833,7 @@ Spanish_Puerto Rico.1252: es_PR.iso8859-1
Spanish_El Salvador.1252: es_SV.iso8859-1
Spanish_Uruguay.1252: es_UY.iso8859-1
Spanish_Venezuela.1252: es_VE.iso8859-1
-Estonian_Estonia.1257 et_EE.iso8859-4
+Estonian_Estonia.1257: et_EE.iso8859-13
Basque_Spain.1252: eu_ES.iso8859-1
Finnish_Finland.1252: fi_FI.iso8859-1
French_Belgium.1252: fr_BE.iso8859-1
@@ -376,8 +851,8 @@ Italian_Switzerland.1252: it_CH.iso8859-1
Italian_Italy.1252: it_IT.iso8859-1
Japanese_Japan.932: ja_JP.SJIS
Korean_Korea.949: ko_KR.EUC
-Lithuanian_Lithuania.1257 lt_LT.iso8859-4
-Latvian_Latvia.1257: lv_LV.iso8859-4
+Lithuanian_Lithuania.1257: lt_LT.iso8859-13
+Latvian_Latvia.1257: lv_LV.iso8859-13
Dutch_Belgium.1252: nl_BE.iso8859-1
Dutch_Netherlands.1252: nl_NL.iso8859-1
Norwegian (Nynorsk)_Norway.1252: no_NO.iso8859-1
@@ -409,9 +884,3 @@ japan: ja_JP.eucJP
japan: ja_JP.U90
#endif
Japanese-EUC: ja_JP.eucJP
-
-XCOMM Added by Sun
-ja_JP.PCK: ja_JP.SJIS
-zh_CN.GBK: zh.GBK
-zh.GBK: zh.GBK
-zh_TW.BIG5: zh_TW.BIG5
diff --git a/nls/locale.dir.pre b/nls/locale.dir.pre
index 692efc02..b30449c7 100644
--- a/nls/locale.dir.pre
+++ b/nls/locale.dir.pre
@@ -1,123 +1,376 @@
-XCOMM $Xorg: locale.dir,v 1.4 2000/12/12 13:00:42 coskrey Exp $
+XCOMM $Xorg: locale.dir,v 1.3 2000/08/17 19:46:48 cpqbld Exp $
XCOMM
-XCOMM This file contains locALE: database file name
-XCOMM The first word is the locALE: database file name and
-XCOMM the second word is full locALE: name.
+XCOMM This file contains locale database file names
+XCOMM The first word is the locale database file name and
+XCOMM the second word is the full locale name.
XCOMM
-C/XLC_LOCALE: C
-iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1
-iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6
-iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5
-iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1
-iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2
-iso8859-2/XLC_LOCALE: cz_CZ.ISO8859-2
-iso8859-1/XLC_LOCALE: da_DK.ISO8859-1
-iso8859-1/XLC_LOCALE: de_AT.ISO8859-1
-iso8859-1/XLC_LOCALE: de_CH.ISO8859-1
-iso8859-1/XLC_LOCALE: de_DE.ISO8859-1
-iso8859-1/XLC_LOCALE: de_LI.ISO8859-1
-iso8859-1/XLC_LOCALE: de_LU.ISO8859-1
-iso8859-7/XLC_LOCALE: el_GR.ISO8859-7
-iso8859-1/XLC_LOCALE: en_AU.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1
-iso8859-1/XLC_LOCALE: en_CA.ISO8859-1
-iso8859-1/XLC_LOCALE: en_GB.ISO8859-1
-iso8859-1/XLC_LOCALE: en_IE.ISO8859-1
-iso8859-1/XLC_LOCALE: en_JM.ISO8859-1
-iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1
-iso8859-1/XLC_LOCALE: en_TT.ISO8859-1
-iso8859-1/XLC_LOCALE: en_UK.ISO8859-1
-iso8859-1/XLC_LOCALE: en_US.ISO8859-1
-iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1
-iso8859-1/XLC_LOCALE: es_AR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_BO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CL.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_DO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_EC.ISO8859-1
-iso8859-1/XLC_LOCALE: es_ES.ISO8859-1
-iso8859-1/XLC_LOCALE: es_GT.ISO8859-1
-iso8859-1/XLC_LOCALE: es_HN.ISO8859-1
-iso8859-1/XLC_LOCALE: es_MX.ISO8859-1
-iso8859-1/XLC_LOCALE: es_NI.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PA.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PE.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PY.ISO8859-1
-iso8859-1/XLC_LOCALE: es_SV.ISO8859-1
-iso8859-1/XLC_LOCALE: es_UY.ISO8859-1
-iso8859-1/XLC_LOCALE: es_VE.ISO8859-1
-iso8859-4/XLC_LOCALE: et_EE.ISO8859-4
-iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1
-iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1
-iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1
-iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1
-iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1
-iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1
-iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1
-iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1
-iso8859-8/XLC_LOCALE: he_IL.ISO8859-8
-iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2
-iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2
-iso8859-1/XLC_LOCALE: id_ID.ISO8859-1
-iso8859-1/XLC_LOCALE: is_IS.ISO8859-1
-iso8859-1/XLC_LOCALE: it_CH.ISO8859-1
-iso8859-1/XLC_LOCALE: it_IT.ISO8859-1
-iso8859-8/XLC_LOCALE: iw_IL.ISO8859-8
-ja/XLC_LOCALE: ja_JP.eucJP
-ja.SJIS/XLC_LOCALE: ja_JP.SJIS
-ja.JIS/XLC_LOCALE: ja_JP.JIS7
-ko/XLC_LOCALE: ko_KR.eucKR
-iso8859-1/XLC_LOCALE: lt_LN.ISO8859-1
-iso8859-1/XLC_LOCALE: lt_LT.ISO8859-4
-iso8859-1/XLC_LOCALE: lv_LV.ISO8859-4
-iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5
-iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1
-iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1
-iso8859-1/XLC_LOCALE: no_NO.ISO8859-1
-iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2
-iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1
-iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1
-iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2
-iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5
-koi8-r/XLC_LOCALE: ru_RU.KOI8-R
-iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2
-iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2
-iso8859-2/XLC_LOCALE: sl_CS.ISO8859-2
-iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2
-iso8859-5/XLC_LOCALE: sp_YU.ISO8859-5
-iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2
-iso8859-2/XLC_LOCALE: sr_SP.ISO8859-2
-iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2
-iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1
-iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1
-th_TH/XLC_LOCALE: th_TH.TACTIS
-iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9
-iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5
-zh/XLC_LOCALE: zh_CN.eucCN
-zh_TW/XLC_LOCALE: zh_TW.eucTW
-en_US.utf/XLC_LOCALE: en_US.utf
+XCOMM $XFree86: xc/nls/locale.dir,v 1.42 2003/01/15 03:59:46 dawes Exp $
+XCOMM
+
+C/XLC_LOCALE: C
+iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1
+iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6
+iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E
+koi8-c/XLC_LOCALE: az_AZ.KOI8-C
+iso8859-5/XLC_LOCALE: be_BY.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: be_BY.CP1251
+iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251
+koi8-r/XLC_LOCALE: bg_BG.KOI8-R
+iso8859-1/XLC_LOCALE: br_FR.ISO8859-1
+iso8859-14/XLC_LOCALE: br_FR.ISO8859-14
+iso8859-15/XLC_LOCALE: br_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15
+iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2
+iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15
+iso8859-2/XLC_LOCALE: cz_CZ.ISO8859-2
+iso8859-1/XLC_LOCALE: da_DK.ISO8859-1
+iso8859-15/XLC_LOCALE: da_DK.ISO8859-15
+iso8859-1/XLC_LOCALE: de_AT.ISO8859-1
+iso8859-15/XLC_LOCALE: de_AT.ISO8859-15
+iso8859-1/XLC_LOCALE: de_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: de_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: de_CH.ISO8859-1
+iso8859-15/XLC_LOCALE: de_CH.ISO8859-15
+iso8859-1/XLC_LOCALE: de_DE.ISO8859-1
+iso8859-15/XLC_LOCALE: de_DE.ISO8859-15
+iso8859-1/XLC_LOCALE: de_LI.ISO8859-1
+iso8859-1/XLC_LOCALE: de_LU.ISO8859-1
+iso8859-15/XLC_LOCALE: de_LU.ISO8859-15
+iso8859-7/XLC_LOCALE: el_GR.ISO8859-7
+iso8859-15/XLC_LOCALE: el_GR.ISO8859-15
+iso8859-1/XLC_LOCALE: en_AU.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BE.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1
+iso8859-1/XLC_LOCALE: en_CA.ISO8859-1
+iso8859-1/XLC_LOCALE: en_GB.ISO8859-1
+iso8859-15/XLC_LOCALE: en_GB.ISO8859-15
+iso8859-1/XLC_LOCALE: en_IE.ISO8859-1
+iso8859-15/XLC_LOCALE: en_IE.ISO8859-15
+iso8859-1/XLC_LOCALE: en_JM.ISO8859-1
+iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1
+iso8859-1/XLC_LOCALE: en_TT.ISO8859-1
+iso8859-1/XLC_LOCALE: en_UK.ISO8859-1
+iso8859-15/XLC_LOCALE: en_UK.ISO8859-15
+iso8859-1/XLC_LOCALE: en_US.ISO8859-1
+iso8859-15/XLC_LOCALE: en_US.ISO8859-15
+iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1
+iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15
+iso8859-3/XLC_LOCALE: eo_EO.ISO8859-3
+iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3
+iso8859-1/XLC_LOCALE: es_AR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_BO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CL.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_DO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_EC.ISO8859-1
+iso8859-1/XLC_LOCALE: es_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: es_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: es_GT.ISO8859-1
+iso8859-1/XLC_LOCALE: es_HN.ISO8859-1
+iso8859-1/XLC_LOCALE: es_MX.ISO8859-1
+iso8859-1/XLC_LOCALE: es_NI.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PA.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PE.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PY.ISO8859-1
+iso8859-1/XLC_LOCALE: es_SV.ISO8859-1
+iso8859-1/XLC_LOCALE: es_UY.ISO8859-1
+iso8859-1/XLC_LOCALE: es_VE.ISO8859-1
+iso8859-1/XLC_LOCALE: et_EE.ISO8859-1
+iso8859-4/XLC_LOCALE: et_EE.ISO8859-4
+iso8859-13/XLC_LOCALE: et_EE.ISO8859-13
+iso8859-15/XLC_LOCALE: et_EE.ISO8859-15
+iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15
+isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342
+iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1
+iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15
+iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1
+iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15
+iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1
+iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14
+iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15
+iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15
+iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15
+iso8859-8/XLC_LOCALE: he_IL.ISO8859-8
+microsoft-cp1255/XLC_LOCALE: he_IL.CP1255
+iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV
+iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2
+iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2
+armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8
+iso8859-1/XLC_LOCALE: id_ID.ISO8859-1
+iso8859-1/XLC_LOCALE: is_IS.ISO8859-1
+iso8859-15/XLC_LOCALE: is_IS.ISO8859-15
+iso8859-1/XLC_LOCALE: it_CH.ISO8859-1
+iso8859-1/XLC_LOCALE: it_IT.ISO8859-1
+iso8859-15/XLC_LOCALE: it_IT.ISO8859-15
+ja/XLC_LOCALE: ja_JP.eucJP
+ja.SJIS/XLC_LOCALE: ja_JP.SJIS
+ja.JIS/XLC_LOCALE: ja_JP.JIS7
+georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY
+georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS
+iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1
+ko/XLC_LOCALE: ko_KR.eucKR
+iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15
+ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133
+mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1
+iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4
+iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13
+iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4
+iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13
+iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13
+iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251
+iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1
+iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3
+iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1
+iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15
+iso8859-1/XLC_LOCALE: no_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: no_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: ny_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: ny_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: pd_US.ISO8859-1
+iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1
+iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1
+iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2
+iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1
+iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1
+iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1
+iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15
+iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2
+iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251
+koi8-r/XLC_LOCALE: ru_RU.KOI8-R
+koi8-u/XLC_LOCALE: ru_UA.KOI8-U
+iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2
+iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2
+iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2
+iso8859-5/XLC_LOCALE: sp_YU.ISO8859-5
+iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2
+iso8859-2/XLC_LOCALE: sr_SP.ISO8859-2
+iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2
+iso8859-5/XLC_LOCALE: sr_YU.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: sr_YU.CP1251
+iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1
+iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15
+iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1
+iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15
+tscii-0/XLC_LOCALE: ta_IN.TSCII-0
+koi8-c/XLC_LOCALE: tg_TJ.KOI8-C
+th_TH/XLC_LOCALE: th_TH.TIS620
+iso8859-11/XLC_LOCALE: th_TH.ISO8859-11
+iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1
+iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9
+tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR
+koi8-c/XLC_LOCALE: tt_RU.KOI8-C
+iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251
+koi8-u/XLC_LOCALE: uk_UA.KOI8-U
+microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256
+vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN
+vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII
+iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15
+microsoft-cp1255/XLC_LOCALE: yi_US.CP1255
+zh_CN/XLC_LOCALE: zh_CN.eucCN
+zh_CN/XLC_LOCALE: zh_CN.GB2312
+zh_CN.gbk/XLC_LOCALE: zh_CN.gbk
+zh_HK.big5/XLC_LOCALE: zh_HK.big5
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5-hkscs
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5-HKSCS
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5HKSCS
+zh_TW.big5/XLC_LOCALE: zh_TW.big5
+zh_TW/XLC_LOCALE: zh_TW.eucTW
+XCOMM Note: The UTF-8 locales don't work correctly yet. Work in progress.
+en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8
+en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: a3_AZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8
+en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8
+en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8
+en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: cz_CZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8
+en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: eo_EO.UTF-8
+en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8
+en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8
+en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8
+en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8
+en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8
+en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8
+en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8
+en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8
+en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8
+en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8
+en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8
+en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8
+en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8
+ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8
+en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8
+en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8
+ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8
+en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8
+en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8
+en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8
+en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8
+en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8
+en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8
+en_US.UTF-8/XLC_LOCALE: no_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: ny_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8
+en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8
+en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8
+en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8
+en_US.UTF-8/XLC_LOCALE: pt_BR.UTF-8
+en_US.UTF-8/XLC_LOCALE: pt_PT.UTF-8
+en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8
+en_US.UTF-8/XLC_LOCALE: ru_RU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8
+en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8
+en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8
+en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_YU.UTF-8
+en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8
+en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8
+en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8
+th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8
+en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8
+en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8
+en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8
+en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8
+en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8
+en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8
+en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8
+en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: zh_CN.UTF-8
+zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8
#ifdef __uxp__
-ja.U90/XLC_LOCALE: ja_JP.U90
-ja.S90/XLC_LOCALE: ja_JP.S90
+ja.U90/XLC_LOCALE: ja_JP.U90
+ja.S90/XLC_LOCALE: ja_JP.S90
#endif
-
-XCOMM Added by Sun
-en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
-zh_TW.BIG5/XLC_LOCALE: zh_TW.BIG5
-zh.GBK/XLC_LOCALE: zh.GBK
diff --git a/nls/microsoft-cp1251/XI18N_OBJS b/nls/microsoft-cp1251/XI18N_OBJS
new file mode 100644
index 00000000..98c5ef5e
--- /dev/null
+++ b/nls/microsoft-cp1251/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1251 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/microsoft-cp1251/XLC_LOCALE.pre b/nls/microsoft-cp1251/XLC_LOCALE.pre
new file mode 100644
index 00000000..3725553c
--- /dev/null
+++ b/nls/microsoft-cp1251/XLC_LOCALE.pre
@@ -0,0 +1,87 @@
+XCOMM $TOG: microsoft-cp1251 /main/1 1998/05/20 14:49:21 kaleb $
+XCOMM XLocale Database Sample for microsoft-cp1251.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/microsoft-cp1251,v 1.2 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1251:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1251:GR
+ }
+ font {
+ primary MICROSOFT-CP1251:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1251
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1251
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1251:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1251:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/microsoft-cp1255/XI18N_OBJS b/nls/microsoft-cp1255/XI18N_OBJS
new file mode 100644
index 00000000..3d0d9a5d
--- /dev/null
+++ b/nls/microsoft-cp1255/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1255 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/microsoft-cp1255/XLC_LOCALE.pre b/nls/microsoft-cp1255/XLC_LOCALE.pre
new file mode 100644
index 00000000..da910306
--- /dev/null
+++ b/nls/microsoft-cp1255/XLC_LOCALE.pre
@@ -0,0 +1,87 @@
+XCOMM $TOG: microsoft-cp1255 /main/1 1998/05/20 14:49:21 kaleb $
+XCOMM XLocale Database Sample for microsoft-cp1255.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/microsoft-cp1255,v 1.2 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1255:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1255:GR
+ }
+ font {
+ primary MICROSOFT-CP1255:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1255
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1255
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1255:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1255:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/microsoft-cp1256/XI18N_OBJS b/nls/microsoft-cp1256/XI18N_OBJS
new file mode 100644
index 00000000..e58719d0
--- /dev/null
+++ b/nls/microsoft-cp1256/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1256 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/microsoft-cp1256/XLC_LOCALE.pre b/nls/microsoft-cp1256/XLC_LOCALE.pre
new file mode 100644
index 00000000..3fb6dc96
--- /dev/null
+++ b/nls/microsoft-cp1256/XLC_LOCALE.pre
@@ -0,0 +1,87 @@
+XCOMM $TOG: microsoft-cp1256 /main/1 1998/05/20 14:49:21 kaleb $
+XCOMM XLocale Database Sample for microsoft-cp1256.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/microsoft-cp1256,v 1.2 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1256:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1256:GR
+ }
+ font {
+ primary MICROSOFT-CP1256:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1256
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1256
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1256:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1256:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/mulelao-1/Compose.pre b/nls/mulelao-1/Compose.pre
new file mode 100644
index 00000000..bd218bb7
--- /dev/null
+++ b/nls/mulelao-1/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM mulelao-1 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/mulelao-1,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/mulelao-1/XI18N_OBJS b/nls/mulelao-1/XI18N_OBJS
new file mode 100644
index 00000000..10d7248f
--- /dev/null
+++ b/nls/mulelao-1/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for mulelao-1 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/mulelao-1/XLC_LOCALE.pre b/nls/mulelao-1/XLC_LOCALE.pre
new file mode 100644
index 00000000..7b96302c
--- /dev/null
+++ b/nls/mulelao-1/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/mulelao-1,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MULELAO-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset MULELAO-1:GR
+ font MULELAO-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MULELAO-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MULELAO-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MULELAO-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MULELAO-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/nokhchi-1/XI18N_OBJS b/nls/nokhchi-1/XI18N_OBJS
new file mode 100644
index 00000000..58b1d01f
--- /dev/null
+++ b/nls/nokhchi-1/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for nokhchi-1 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/nokhchi-1/XLC_LOCALE.pre b/nls/nokhchi-1/XLC_LOCALE.pre
new file mode 100644
index 00000000..8750b3ba
--- /dev/null
+++ b/nls/nokhchi-1/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/nokhchi-1,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary NOKHCHI-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset NOKHCHI-1:GR
+ font NOKHCHI-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name NOKHCHI-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name NOKHCHI-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding NOKHCHI-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding NOKHCHI-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/tatar-cyr/XI18N_OBJS b/nls/tatar-cyr/XI18N_OBJS
new file mode 100644
index 00000000..074f2a17
--- /dev/null
+++ b/nls/tatar-cyr/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for tatar-cyr locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/tatar-cyr/XLC_LOCALE.pre b/nls/tatar-cyr/XLC_LOCALE.pre
new file mode 100644
index 00000000..17f9893f
--- /dev/null
+++ b/nls/tatar-cyr/XLC_LOCALE.pre
@@ -0,0 +1,87 @@
+XCOMM $TOG: tatar-cyr /main/1 1998/05/20 14:49:21 kaleb $
+XCOMM XLocale Database Sample for tatar-cyr.
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/tatar-cyr,v 1.2 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TATAR-CYR:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name TATAR-CYR:GR
+ }
+ font {
+ primary TATAR-CYR:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TATAR-CYR
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TATAR-CYR
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TATAR-CYR:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TATAR-CYR:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/th_TH.UTF-8/XI18N_OBJS b/nls/th_TH.UTF-8/XI18N_OBJS
new file mode 100644
index 00000000..8e1df49b
--- /dev/null
+++ b/nls/th_TH.UTF-8/XI18N_OBJS
@@ -0,0 +1,9 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for th_TH.UTF-8 locale
+#
+# $XFree86: xc/nls/XI18N_OBJS/th_TH.UTF-8,v 1.1 2002/10/09 00:05:23 dawes Exp $
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/th_TH.UTF-8/XLC_LOCALE.pre b/nls/th_TH.UTF-8/XLC_LOCALE.pre
new file mode 100644
index 00000000..839da737
--- /dev/null
+++ b/nls/th_TH.UTF-8/XLC_LOCALE.pre
@@ -0,0 +1,75 @@
+XCOMM $XConsortium: th_TH$
+XCOMM XLocale Database Sample for th_TH
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/th_TH.UTF-8,v 1.2 2003/01/16 10:01:29 eich Exp $
+XCOMM
+XCOMM Modified from origial th_TH.TACTIS
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs1 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL
+}
+XCOMM fs1 class (Thai)
+fs2 {
+ charset TIS620-0:GR
+ font TIS620-0:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 3
+state_depend_encoding False
+
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+
+
+
+
+use_stdc_env True
+force_convert_to_mb True
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+
+ wc_encoding \x30000000
+ ct_encoding TIS620-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/th_TH/XI18N_OBJS b/nls/th_TH/XI18N_OBJS
new file mode 100644
index 00000000..d677a002
--- /dev/null
+++ b/nls/th_TH/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for th_TH locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/th_TH/XLC_LOCALE.pre b/nls/th_TH/XLC_LOCALE.pre
new file mode 100644
index 00000000..81e71613
--- /dev/null
+++ b/nls/th_TH/XLC_LOCALE.pre
@@ -0,0 +1,67 @@
+XCOMM $XConsortium: th_TH$
+XCOMM XLocale Database Sample for th_TH
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/th_TH,v 1.1 2001/02/09 00:02:55 dawes Exp $
+XCOMM
+XCOMM Modified from origial th_TH.TACTIS
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL
+}
+XCOMM fs1 class (Thai)
+fs1 {
+ charset TIS620-0:GR
+ font TIS620-0:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TIS620
+mb_cur_max 1
+state_depend_encoding False
+
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TIS620-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/tscii-0/XI18N_OBJS b/nls/tscii-0/XI18N_OBJS
new file mode 100644
index 00000000..237a3379
--- /dev/null
+++ b/nls/tscii-0/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for tscii-0 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/tscii-0/XLC_LOCALE.pre b/nls/tscii-0/XLC_LOCALE.pre
new file mode 100644
index 00000000..19b610c3
--- /dev/null
+++ b/nls/tscii-0/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/tscii-0,v 1.2 2000/12/01 17:43:03 dawes Exp $
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TSCII-0:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset TSCII-0:GR
+ font TSCII-0:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TSCII-0
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TSCII-0
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TSCII-0:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TSCII-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/vi_VN.tcvn/Compose.pre b/nls/vi_VN.tcvn/Compose.pre
new file mode 100644
index 00000000..7f291992
--- /dev/null
+++ b/nls/vi_VN.tcvn/Compose.pre
@@ -0,0 +1,139 @@
+XCOMM $XConsortium: iso8859-1 /main/6 1995/11/08 07:24:10 kaleb $
+XCOMM $XFree86: xc/nls/Compose/vi_VN.tcvn,v 1.3 2001/04/26 21:09:40 dawes Exp $
+XCOMM 1998/12/18 Le Hong Boi $
+XCOMM
+XCOMM TCVN 5712-2 Compose Sequences
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_hook> <space> : " " space
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <apostrophe> : "\264" acute
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\200" Agrave
+<dead_grave> <a> : "\265" agrave
+<dead_hook> <A> : "\266" Ahook
+<dead_hook> <a> : "\266" ahook
+<dead_tilde> <A> : "\202" Atilde
+<dead_tilde> <a> : "\267" atilde
+<dead_acute> <A> : "\203" Aacute
+<dead_acute> <a> : "\270" aacute
+<dead_belowdot> <A> : "\271" Abelowdot
+<dead_belowdot> <a> : "\271" abelowdot
+<dead_grave> <Abreve> : "\273" Abrevegrave
+<dead_grave> <abreve> : "\273" abrevegrave
+<dead_hook> <Abreve> : "\274" Abrevehook
+<dead_hook> <abreve> : "\274" abrevehook
+<dead_tilde> <Abreve> : "\275" Abrevetilde
+<dead_tilde> <abreve> : "\275" abrevetilde
+<dead_acute> <Abreve> : "\276" Abreveacute
+<dead_acute> <abreve> : "\276" abreveacute
+<dead_belowdot> <Abreve> : "\306" Abrevebelowdot
+<dead_belowdot> <abreve> : "\306" abrevebelowdot
+<dead_grave> <Acircumflex> : "\307" Acircumflexgrave
+<dead_grave> <acircumflex> : "\307" acircumflexgrave
+<dead_hook> <Acircumflex> : "\310" Acircumflexhook
+<dead_hook> <acircumflex> : "\310" acircumflexhook
+<dead_tilde> <Acircumflex> : "\311" Acircumflextilde
+<dead_tilde> <acircumflex> : "\311" acircumflextilde
+<dead_acute> <Acircumflex> : "\312" Acircumflexacute
+<dead_acute> <acircumflex> : "\312" acircumflexacute
+<dead_belowdot> <Acircumflex> : "\313" Acircumflexbelowdot
+<dead_belowdot> <acircumflex> : "\313" acircumflexbelowdot
+<dead_grave> <E> : "\207" Egrave
+<dead_grave> <e> : "\314" egrave
+<dead_hook> <E> : "\316" Ehook
+<dead_hook> <e> : "\316" ehook
+<dead_tilde> <E> : "\317" Etilde
+<dead_tilde> <e> : "\317" etilde
+<dead_acute> <E> : "\212" Eacute
+<dead_acute> <e> : "\320" eacute
+<dead_belowdot> <E> : "\321" Ebelowdot
+<dead_belowdot> <e> : "\321" ebelowdot
+<dead_grave> <Ecircumflex> : "\322" Ecircumflexgrave
+<dead_grave> <ecircumflex> : "\322" ecircumflexgrave
+<dead_hook> <Ecircumflex> : "\323" Ecircumflexhook
+<dead_hook> <ecircumflex> : "\323" ecircumflexhook
+<dead_tilde> <Ecircumflex> : "\324" Ecircumflextilde
+<dead_tilde> <ecircumflex> : "\324" ecircumflextilde
+<dead_acute> <Ecircumflex> : "\325" Ecircumflexacute
+<dead_acute> <ecircumflex> : "\325" ecircumflexacute
+<dead_belowdot> <Ecircumflex> : "\326" Ecircumflexbelowdot
+<dead_belowdot> <ecircumflex> : "\326" ecircumflexbelowdot
+<dead_grave> <I> : "\215" Igrave
+<dead_grave> <i> : "\327" igrave
+<dead_hook> <I> : "\330" Ihook
+<dead_hook> <i> : "\330" ihook
+<dead_tilde> <I> : "\217" Itilde
+<dead_tilde> <i> : "\334" itilde
+<dead_acute> <I> : "\220" Iacute
+<dead_acute> <i> : "\335" iacute
+<dead_belowdot> <I> : "\336" Ibelowdot
+<dead_belowdot> <i> : "\336" ibelowdot
+<dead_grave> <O> : "\222" Ograve
+<dead_grave> <o> : "\337" ograve
+<dead_hook> <O> : "\341" Ohook
+<dead_hook> <o> : "\341" ohook
+<dead_tilde> <O> : "\224" Otilde
+<dead_tilde> <o> : "\342" otilde
+<dead_acute> <O> : "\225" Oacute
+<dead_acute> <o> : "\343" oacute
+<dead_belowdot> <O> : "\344" Obelowdot
+<dead_belowdot> <o> : "\344" obelowdot
+<dead_grave> <Ocircumflex> : "\345" Ocircumflexgrave
+<dead_grave> <ocircumflex> : "\345" ocircumflexgrave
+<dead_hook> <Ocircumflex> : "\346" Ocircumflexhook
+<dead_hook> <ocircumflex> : "\346" ocircumflexhook
+<dead_tilde> <Ocircumflex> : "\347" Ocircumflextilde
+<dead_tilde> <ocircumflex> : "\347" ocircumflextilde
+<dead_acute> <Ocircumflex> : "\350" Ocircumflexacute
+<dead_acute> <ocircumflex> : "\350" ocircumflexacute
+<dead_belowdot> <Ocircumflex> : "\351" Ocircumflexbelowdot
+<dead_belowdot> <ocircumflex> : "\351" ocircumflexbelowdot
+<dead_grave> <Ohorn> : "\352" Ohorngrave
+<dead_grave> <ohorn> : "\352" ohorngrave
+<dead_hook> <Ohorn> : "\353" Ohornhook
+<dead_hook> <ohorn> : "\353" ohornhook
+<dead_tilde> <Ohorn> : "\354" Ohorntilde
+<dead_tilde> <ohorn> : "\354" ohorntilde
+<dead_acute> <Ohorn> : "\355" Ohornacute
+<dead_acute> <ohorn> : "\355" ohornacute
+<dead_belowdot> <Ohorn> : "\356" Ohornbelowdot
+<dead_belowdot> <ohorn> : "\356" ohornbelowdot
+<dead_grave> <U> : "\235" Ugrave
+<dead_grave> <u> : "\357" ugrave
+<dead_hook> <U> : "\361" Uhook
+<dead_hook> <u> : "\361" uhook
+<dead_tilde> <U> : "\237" Utilde
+<dead_tilde> <u> : "\362" utilde
+<dead_acute> <U> : "\001" Uacute
+<dead_acute> <u> : "\363" uacute
+<dead_belowdot> <U> : "\364" Ubelowdot
+<dead_belowdot> <u> : "\364" ubelowdot
+<dead_grave> <Uhorn> : "\365" Uhorngrave
+<dead_grave> <uhorn> : "\365" uhorngrave
+<dead_hook> <Uhorn> : "\366" Uhornhook
+<dead_hook> <uhorn> : "\366" uhornhook
+<dead_tilde> <Uhorn> : "\367" Uhorntilde
+<dead_tilde> <uhorn> : "\367" uhorntilde
+<dead_acute> <Uhorn> : "\370" Uhornacute
+<dead_acute> <uhorn> : "\370" uhornacute
+<dead_belowdot> <Uhorn> : "\371" Uhornbelowdot
+<dead_belowdot> <uhorn> : "\371" uhornbelowdot
+<dead_grave> <Y> : "\023" Ygrave
+<dead_grave> <y> : "\372" ygrave
+<dead_hook> <Y> : "\373" Yhook
+<dead_hook> <y> : "\373" yhook
+<dead_tilde> <Y> : "\374" Ytilde
+<dead_tilde> <y> : "\374" ytilde
+<dead_acute> <Y> : "\026" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_belowdot> <Y> : "\376" Ybelowdot
+<dead_belowdot> <y> : "\376" ybelowdot
+XCOMM End of Sequence Definition
diff --git a/nls/vi_VN.tcvn/XI18N_OBJS b/nls/vi_VN.tcvn/XI18N_OBJS
new file mode 100644
index 00000000..cff66dfc
--- /dev/null
+++ b/nls/vi_VN.tcvn/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for vi_VN.tcvn locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/vi_VN.tcvn/XLC_LOCALE.pre b/nls/vi_VN.tcvn/XLC_LOCALE.pre
new file mode 100644
index 00000000..76b10547
--- /dev/null
+++ b/nls/vi_VN.tcvn/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM XLocale Database Sample for vi_VN.TCVN
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/vi_VN.tcvn,v 1.2 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TCVN-5712:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset TCVN-5712:GR
+ font TCVN-5712:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TCVN-5712
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TCVN-5712
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TCVN-5712:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TCVN-5712:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/vi_VN.viscii/Compose.pre b/nls/vi_VN.viscii/Compose.pre
new file mode 100644
index 00000000..ac0176c8
--- /dev/null
+++ b/nls/vi_VN.viscii/Compose.pre
@@ -0,0 +1,139 @@
+XCOMM $XConsortium: iso8859-1 /main/6 1995/11/08 07:24:10 kaleb $
+XCOMM $XFree86: xc/nls/Compose/vi_VN.viscii,v 1.3 2001/04/26 21:09:40 dawes Exp $
+XCOMM 1998/12/18 Le Hong Boi $
+XCOMM
+XCOMM TCVN 5712-2 Compose Sequences
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_hook> <space> : " " space
+<dead_tilde> <space> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <apostrophe> : "\264" acute
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\300" Agrave
+<dead_grave> <a> : "\340" agrave
+<dead_hook> <A> : "\304" Ahook
+<dead_hook> <a> : "\344" ahook
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <a> : "\343" atilde
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <a> : "\341" aacute
+<dead_belowdot> <A> : "\200" Abelowdot
+<dead_belowdot> <a> : "\325" abelowdot
+<dead_grave> <Abreve> : "\202" Abrevegrave
+<dead_grave> <abreve> : "\242" abrevegrave
+<dead_hook> <Abreve> : "\002" Abrevehook
+<dead_hook> <abreve> : "\306" abrevehook
+<dead_tilde> <Abreve> : "\005" Abrevetilde
+<dead_tilde> <abreve> : "\307" abrevetilde
+<dead_acute> <Abreve> : "\201" Abreveacute
+<dead_acute> <abreve> : "\241" abreveacute
+<dead_belowdot> <Abreve> : "\203" Abrevebelowdot
+<dead_belowdot> <abreve> : "\243" abrevebelowdot
+<dead_grave> <Acircumflex> : "\205" Acircumflexgrave
+<dead_grave> <acircumflex> : "\245" acircumflexgrave
+<dead_hook> <Acircumflex> : "\206" Acircumflexhook
+<dead_hook> <acircumflex> : "\246" acircumflexhook
+<dead_tilde> <Acircumflex> : "\006" Acircumflextilde
+<dead_tilde> <acircumflex> : "\347" acircumflextilde
+<dead_acute> <Acircumflex> : "\204" Acircumflexacute
+<dead_acute> <acircumflex> : "\244" acircumflexacute
+<dead_belowdot> <Acircumflex> : "\207" Acircumflexbelowdot
+<dead_belowdot> <acircumflex> : "\247" acircumflexbelowdot
+<dead_grave> <E> : "\310" Egrave
+<dead_grave> <e> : "\350" egrave
+<dead_hook> <E> : "\313" Ehook
+<dead_hook> <e> : "\353" ehook
+<dead_tilde> <E> : "\210" Etilde
+<dead_tilde> <e> : "\250" etilde
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <e> : "\351" eacute
+<dead_belowdot> <E> : "\211" Ebelowdot
+<dead_belowdot> <e> : "\251" ebelowdot
+<dead_grave> <Ecircumflex> : "\213" Ecircumflexgrave
+<dead_grave> <ecircumflex> : "\253" ecircumflexgrave
+<dead_hook> <Ecircumflex> : "\214" Ecircumflexhook
+<dead_hook> <ecircumflex> : "\254" ecircumflexhook
+<dead_tilde> <Ecircumflex> : "\215" Ecircumflextilde
+<dead_tilde> <ecircumflex> : "\255" ecircumflextilde
+<dead_acute> <Ecircumflex> : "\212" Ecircumflexacute
+<dead_acute> <ecircumflex> : "\252" ecircumflexacute
+<dead_belowdot> <Ecircumflex> : "\216" Ecircumflexbelowdot
+<dead_belowdot> <ecircumflex> : "\256" ecircumflexbelowdot
+<dead_grave> <I> : "\314" Igrave
+<dead_grave> <i> : "\354" igrave
+<dead_hook> <I> : "\233" Ihook
+<dead_hook> <i> : "\357" ihook
+<dead_tilde> <I> : "\316" Itilde
+<dead_tilde> <i> : "\356" itilde
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <i> : "\355" iacute
+<dead_belowdot> <I> : "\230" Ibelowdot
+<dead_belowdot> <i> : "\270" ibelowdot
+<dead_grave> <O> : "\322" Ograve
+<dead_grave> <o> : "\362" ograve
+<dead_hook> <O> : "\231" Ohook
+<dead_hook> <o> : "\366" ohook
+<dead_tilde> <O> : "\240" Otilde
+<dead_tilde> <o> : "\365" otilde
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <o> : "\363" oacute
+<dead_belowdot> <O> : "\232" Obelowdot
+<dead_belowdot> <o> : "\367" obelowdot
+<dead_grave> <Ocircumflex> : "\220" Ocircumflexgrave
+<dead_grave> <ocircumflex> : "\260" ocircumflexgrave
+<dead_hook> <Ocircumflex> : "\221" Ocircumflexhook
+<dead_hook> <ocircumflex> : "\261" ocircumflexhook
+<dead_tilde> <Ocircumflex> : "\222" Ocircumflextilde
+<dead_tilde> <ocircumflex> : "\262" ocircumflextilde
+<dead_acute> <Ocircumflex> : "\217" Ocircumflexacute
+<dead_acute> <ocircumflex> : "\257" ocircumflexacute
+<dead_belowdot> <Ocircumflex> : "\223" Ocircumflexbelowdot
+<dead_belowdot> <ocircumflex> : "\265" ocircumflexbelowdot
+<dead_grave> <Ohorn> : "\226" Ohorngrave
+<dead_grave> <ohorn> : "\266" ohorngrave
+<dead_hook> <Ohorn> : "\227" Ohornhook
+<dead_hook> <ohorn> : "\267" ohornhook
+<dead_tilde> <Ohorn> : "\263" Ohorntilde
+<dead_tilde> <ohorn> : "\336" ohorntilde
+<dead_acute> <Ohorn> : "\225" Ohornacute
+<dead_acute> <ohorn> : "\276" ohornacute
+<dead_belowdot> <Ohorn> : "\224" Ohornbelowdot
+<dead_belowdot> <ohorn> : "\376" ohornbelowdot
+<dead_grave> <U> : "\331" Ugrave
+<dead_grave> <u> : "\371" ugrave
+<dead_hook> <U> : "\234" Uhook
+<dead_hook> <u> : "\374" uhook
+<dead_tilde> <U> : "\235" Utilde
+<dead_tilde> <u> : "\373" utilde
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <u> : "\372" uacute
+<dead_belowdot> <U> : "\236" Ubelowdot
+<dead_belowdot> <u> : "\370" ubelowdot
+<dead_grave> <Uhorn> : "\273" Uhorngrave
+<dead_grave> <uhorn> : "\327" uhorngrave
+<dead_hook> <Uhorn> : "\274" Uhornhook
+<dead_hook> <uhorn> : "\330" uhornhook
+<dead_tilde> <Uhorn> : "\377" Uhorntilde
+<dead_tilde> <uhorn> : "\346" uhorntilde
+<dead_acute> <Uhorn> : "\272" Uhornacute
+<dead_acute> <uhorn> : "\321" uhornacute
+<dead_belowdot> <Uhorn> : "\271" Uhornbelowdot
+<dead_belowdot> <uhorn> : "\361" uhornbelowdot
+<dead_grave> <Y> : "\237" Ygrave
+<dead_grave> <y> : "\317" ygrave
+<dead_hook> <Y> : "\024" Yhook
+<dead_hook> <y> : "\326" yhook
+<dead_tilde> <Y> : "\031" Ytilde
+<dead_tilde> <y> : "\333" ytilde
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_belowdot> <Y> : "\036" Ybelowdot
+<dead_belowdot> <y> : "\334" ybelowdot
+XCOMM End of Sequence Definition
diff --git a/nls/vi_VN.viscii/XI18N_OBJS b/nls/vi_VN.viscii/XI18N_OBJS
new file mode 100644
index 00000000..5f4b3b60
--- /dev/null
+++ b/nls/vi_VN.viscii/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for vi_VN.viscii locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/vi_VN.viscii/XLC_LOCALE.pre b/nls/vi_VN.viscii/XLC_LOCALE.pre
new file mode 100644
index 00000000..9018602b
--- /dev/null
+++ b/nls/vi_VN.viscii/XLC_LOCALE.pre
@@ -0,0 +1,80 @@
+XCOMM XLocale Database Sample for vi_VN.VISCII
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/vi_VN.viscii,v 1.2 2000/12/01 17:43:03 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary VISCII1.1-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset VISCII1.1-1:GR
+ font VISCII1.1-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name VISCII1.1-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name VISCII1.1-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding VISCII1.1-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding VISCII1.1-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_CN.gbk/Compose.pre b/nls/zh_CN.gbk/Compose.pre
new file mode 100644
index 00000000..eb309f4c
--- /dev/null
+++ b/nls/zh_CN.gbk/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM zh_CN.GBK Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/zh_CN.gbk,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/zh_CN.gbk/XI18N_OBJS b/nls/zh_CN.gbk/XI18N_OBJS
new file mode 100644
index 00000000..197a3e19
--- /dev/null
+++ b/nls/zh_CN.gbk/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.gbk locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/zh_CN.gbk/XLC_LOCALE.pre b/nls/zh_CN.gbk/XLC_LOCALE.pre
new file mode 100644
index 00000000..f9b1ab1a
--- /dev/null
+++ b/nls/zh_CN.gbk/XLC_LOCALE.pre
@@ -0,0 +1,71 @@
+XCOMM
+XCOMM X11R6 L10N for Chinese GBK Encoding.
+XCOMM modified from xc/nls/XLC_LOCALE/zh_TW.Big5
+XCOMM by Sean Chen <seanc@turbolinux.com>
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/zh_CN.gbk,v 1.1 2001/03/06 18:03:18 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_CN.GBK
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\xfe
+ byte2 \x40,\x7e;\x80,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding GBK-0:GLGR:\x1b\x25\x2f\x32\x80\x88\x47\x42\x4b\x2d\x30\x02
+
+ mb_conversion [\x8140,\xfefe]->\x0140
+ ct_conversion [\x0140,\x7efe]->\x8140
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_CN/XI18N_OBJS b/nls/zh_CN/XI18N_OBJS
new file mode 100644
index 00000000..36888c05
--- /dev/null
+++ b/nls/zh_CN/XI18N_OBJS
@@ -0,0 +1,10 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh locale
+#
+# $XFree86: xc/nls/XI18N_OBJS/zh_CN,v 1.1 2002/06/03 22:19:44 dawes Exp $
+#
+XLC common/xlocale _XlcEucLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/zh_CN/XLC_LOCALE.pre b/nls/zh_CN/XLC_LOCALE.pre
new file mode 100644
index 00000000..ffe560a5
--- /dev/null
+++ b/nls/zh_CN/XLC_LOCALE.pre
@@ -0,0 +1,64 @@
+XCOMM $Xorg: zh,v 1.3 2000/08/17 19:47:00 cpqbld Exp $
+XCOMM XLocale Database Sample for zh (eucCN).
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/zh_CN,v 1.1 2001/11/01 23:35:28 dawes Exp $
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ substitute GB2312.1980-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh.euc
+mb_cur_max 2
+state_depend_encoding False
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_HK.big5/XLC_LOCALE.pre b/nls/zh_HK.big5/XLC_LOCALE.pre
new file mode 100644
index 00000000..706f1e3b
--- /dev/null
+++ b/nls/zh_HK.big5/XLC_LOCALE.pre
@@ -0,0 +1,70 @@
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/zh_HK.big5,v 1.1 2001/11/01 23:35:28 dawes Exp $
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_HK.Big5
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_HK.big5hkscs/XI18N_OBJS b/nls/zh_HK.big5hkscs/XI18N_OBJS
new file mode 100644
index 00000000..29dc2167
--- /dev/null
+++ b/nls/zh_HK.big5hkscs/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.big5hkscs locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/zh_HK.big5hkscs/XLC_LOCALE.pre b/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
new file mode 100644
index 00000000..8aad5b4d
--- /dev/null
+++ b/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
@@ -0,0 +1,151 @@
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM modified for Big5HKSCS by Roger So <roger.so@sw-linux.com>
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/zh_HK.big5hkscs,v 1.2 2001/11/01 23:35:28 dawes Exp $
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (standard Big5)
+fs1 {
+ charset {
+ name BIG5-0:GLGR;BIG5-1:GLGR;BIG5-2:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+XCOMM fs2 class (HKSCS extensions)
+fs2 {
+ charset {
+ name BIG5HKSCS-0:GLGR;BIG5HKSCS-1:GLGR;BIG5HKSCS-2:GLGR
+ }
+ font {
+ primary BIG5HKSCS-0:GLGR
+ substitute BIG5HKSCS-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_HK.Big5HKSCS
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM standard Big5, A140-C5FE + C940-F8FE
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xc5;\xc9,\xf8
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02
+
+ mb_conversion [\x8140,\xfefe]->\x0140
+ ct_conversion [\x0140,\x7efe]->\x8140
+}
+
+XCOMM standard Big5, C640-C67E
+cs2 {
+ side none
+ length 2
+ byte1 \xc6
+ byte2 \x40,\x7e
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-1:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x31\x02
+
+ mb_conversion [\x8140,\xfefe]->\x0140
+ ct_conversion [\x0140,\x7efe]->\x8140
+}
+
+XCOMM standard Big5, F940-F9D5
+cs3 {
+ side none
+ length 2
+ byte1 \xf9
+ byte2 \x40,\xd5
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-2:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x32\x02
+
+ mb_conversion [\x8140,\xfefe]->\x0140
+ ct_conversion [\x0140,\x7efe]->\x8140
+}
+
+
+XCOMM HKSCS extensions, 8540-A0FE + C740-C8FE + FA40-FEFE
+cs4 {
+ side none
+ length 2
+ byte1 \x85,\xa0;\xc7,\xc8;\xfa,\xfe
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5HKSCS-0:GLGR:\x1b\x25\x2f\x32\x80\x8c\x42\x49\x47\x35\x48\x4b\x53\x43\x53\x2d\x30\x02
+
+ mb_conversion [\x8140,\xfefe]->\0x0140
+ ct_conversion [\x0140,\x7efe]->\0x8140
+}
+
+XCOMM HKSCS extensions, C6A1-C6FE
+cs5 {
+ side none
+ length 2
+ byte1 \xc6
+ byte2 \xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5HKSCS-1:GLGR:\x1b\x25\x2f\x32\x80\x8c\x42\x49\x47\x35\x48\x4b\x53\x43\x53\x2d\x31\x02
+
+ mb_conversion [\x8140,\xfefe]->\0x0140
+ ct_conversion [\x0140,\x7efe]->\0x8140
+}
+
+XCOMM HKSCS extensions, F9D6-F9FE
+cs6 {
+ side none
+ length 2
+ byte1 \xf9
+ byte2 \xd6,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5HKSCS-2:GLGR:\x1b\x25\x2f\x32\x80\x8c\x42\x49\x47\x35\x48\x4b\x53\x43\x53\x2d\x32\x02
+
+ mb_conversion [\x8140,\xfefe]->\0x0140
+ ct_conversion [\x0140,\x7efe]->\0x8140
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_TW.UTF-8/XI18N_OBJS b/nls/zh_TW.UTF-8/XI18N_OBJS
new file mode 100644
index 00000000..a3a644b7
--- /dev/null
+++ b/nls/zh_TW.UTF-8/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/zh_TW.UTF-8/XLC_LOCALE.pre b/nls/zh_TW.UTF-8/XLC_LOCALE.pre
new file mode 100644
index 00000000..fe40858e
--- /dev/null
+++ b/nls/zh_TW.UTF-8/XLC_LOCALE.pre
@@ -0,0 +1,165 @@
+XCOMM $XFree86: xc/nls/XLC_LOCALE/zh_TW.UTF-8,v 1.1 2003/01/15 03:59:47 dawes Exp $
+XCOMM XLocale Database Sample for zh_TW.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs1 class (7 bit ASCII)
+fs1 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs2 class (ISO8859 families)
+fs2 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs3 class (Chinese Han Character (Traditional))
+fs3 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+XCOMM fs4 class (Kanji)
+fs4 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs5 class (Korean Character)
+fs5 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs6 class (Chinese Han Character)
+fs6 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs7 class (Half Kana)
+fs7 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs7 class
+cs7 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_TW.big5/Compose.pre b/nls/zh_TW.big5/Compose.pre
new file mode 100644
index 00000000..c2b7da9b
--- /dev/null
+++ b/nls/zh_TW.big5/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM zh_TW.big5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/zh_TW.big5,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/zh_TW.big5/XI18N_OBJS b/nls/zh_TW.big5/XI18N_OBJS
new file mode 100644
index 00000000..6937f614
--- /dev/null
+++ b/nls/zh_TW.big5/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW.big5 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/nls/zh_TW.big5/XLC_LOCALE.pre b/nls/zh_TW.big5/XLC_LOCALE.pre
new file mode 100644
index 00000000..6e03bbe5
--- /dev/null
+++ b/nls/zh_TW.big5/XLC_LOCALE.pre
@@ -0,0 +1,94 @@
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM
+XCOMM $XFree86: xc/nls/XLC_LOCALE/zh_TW.big5,v 1.3 2001/08/09 19:14:09 dawes Exp $
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_TW.Big5
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00038000
+wc_shift_bits 8
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ byte1 \xa1,\xc7
+ byte2 \x40,\x7e;\xa1,\xfe
+ wc_encoding \x00010000
+ ct_encoding BIG5-E0:GL;BIG5-E0:GR
+ mb_conversion [\xa140,\xa17e]->\x2121, [\xa1a1,\xa1bf]->\x2160, [\xa1c0,\xa1fe]->\x2221, [\xa240,\xa25e]->\x2260, [\xa25f,\xa27e]->\x2321, [\xa2a1,\xa2de]->\x2341, [\xa2df,\xa2fe]->\x2421, [\xa340,\xa37d]->\x2441, [\xa37e,\xa37e]->\x2521, [\xa3a1,\xa3fd]->\x2522, [\xa3fe,\xa3fe]->\x2621, [\xa440,\xa47e]->\x2622, [\xa4a1,\xa4be]->\x2661, [\xa4bf,\xa4fe]->\x2721, [\xa540,\xa55d]->\x2761, [\xa55e,\xa57e]->\x2821, [\xa5a1,\xa5dd]->\x2842, [\xa5de,\xa5fe]->\x2921, [\xa640,\xa67c]->\x2942, [\xa67d,\xa67e]->\x2a21, [\xa6a1,\xa6fc]->\x2a23, [\xa6fd,\xa6fe]->\x2b21, [\xa740,\xa77e]->\x2b23, [\xa7a1,\xa7bd]->\x2b62, [\xa7be,\xa7fe]->\x2c21, [\xa840,\xa85c]->\x2c62, [\xa85d,\xa87e]->\x2d21, [\xa8a1,\xa8dc]->\x2d43, [\xa8dd,\xa8fe]->\x2e21, [\xa940,\xa97b]->\x2e43, [\xa97c,\xa97e]->\x2f21, [\xa9a1,\xa9fb]->\x2f24, [\xa9fc,\xa9fe]->\x3021, [\xaa40,\xaa7e]->\x3024, [\xaaa1,\xaabc]->\x3063, [\xaabd,\xaafe]->\x3121, [\xab40,\xab5b]->\x3163, [\xab5c,\xab7e]->\x3221, [\xaba1,\xabdb]->\x3244, [\xabdc,\xabfe]->\x3321, [\xac40,\xac7a]->\x3344, [\xac7b,\xac7e]->\x3421, [\xaca1,\xacfa]->\x3425, [\xacfb,\xacfe]->\x3521, [\xad40,\xad7e]->\x3525, [\xada1,\xadbb]->\x3564, [\xadbc,\xadfe]->\x3621, [\xae40,\xae5a]->\x3664, [\xae5b,\xae7e]->\x3721, [\xaea1,\xaeda]->\x3745, [\xaedb,\xaefe]->\x3821, [\xaf40,\xaf79]->\x3845, [\xaf7a,\xaf7e]->\x3921, [\xafa1,\xaff9]->\x3926, [\xaffa,\xaffe]->\x3a21, [\xb040,\xb07e]->\x3a26, [\xb0a1,\xb0ba]->\x3a65, [\xb0bb,\xb0fe]->\x3b21, [\xb140,\xb159]->\x3b65, [\xb15a,\xb17e]->\x3c21, [\xb1a1,\xb1d9]->\x3c46, [\xb1da,\xb1fe]->\x3d21, [\xb240,\xb278]->\x3d46, [\xb279,\xb27e]->\x3e21, [\xb2a1,\xb2f8]->\x3e27, [\xb2f9,\xb2fe]->\x3f21, [\xb340,\xb37e]->\x3f27, [\xb3a1,\xb3b9]->\x3f66, [\xb3ba,\xb3fe]->\x4021, [\xb440,\xb458]->\x4066, [\xb459,\xb47e]->\x4121, [\xb4a1,\xb4d8]->\x4147, [\xb4d9,\xb4fe]->\x4221, [\xb540,\xb577]->\x4247, [\xb578,\xb57e]->\x4321, [\xb5a1,\xb5f7]->\x4328, [\xb5f8,\xb5fe]->\x4421, [\xb640,\xb67e]->\x4428, [\xb6a1,\xb6b8]->\x4467, [\xb6b9,\xb6fe]->\x4521, [\xb740,\xb757]->\x4567, [\xb758,\xb77e]->\x4621, [\xb7a1,\xb7d7]->\x4648, [\xb7d8,\xb7fe]->\x4721, [\xb840,\xb876]->\x4748, [\xb877,\xb87e]->\x4821, [\xb8a1,\xb8f6]->\x4829, [\xb8f7,\xb8fe]->\x4921, [\xb940,\xb97e]->\x4929, [\xb9a1,\xb9b7]->\x4968, [\xb9b8,\xb9fe]->\x4a21, [\xba40,\xba56]->\x4a68, [\xba57,\xba7e]->\x4b21, [\xbaa1,\xbad6]->\x4b49, [\xbad7,\xbafe]->\x4c21, [\xbb40,\xbb75]->\x4c49, [\xbb76,\xbb7e]->\x4d21, [\xbba1,\xbbf5]->\x4d2a, [\xbbf6,\xbbfe]->\x4e21, [\xbc40,\xbc7e]->\x4e2a, [\xbca1,\xbcb6]->\x4e69, [\xbcb7,\xbcfe]->\x4f21, [\xbd40,\xbd55]->\x4f69, [\xbd56,\xbd7e]->\x5021, [\xbda1,\xbdd5]->\x504a, [\xbdd6,\xbdfe]->\x5121, [\xbe40,\xbe74]->\x514a, [\xbe75,\xbe7e]->\x5221, [\xbea1,\xbef4]->\x522b, [\xbef5,\xbefe]->\x5321, [\xbf40,\xbf7e]->\x532b, [\xbfa1,\xbfb5]->\x536a, [\xbfb6,\xbffe]->\x5421, [\xc040,\xc054]->\x546a, [\xc055,\xc07e]->\x5521, [\xc0a1,\xc0d4]->\x554b, [\xc0d5,\xc0fe]->\x5621, [\xc140,\xc173]->\x564b, [\xc174,\xc17e]->\x5721, [\xc1a1,\xc1f3]->\x572c, [\xc1f4,\xc1fe]->\x5821, [\xc240,\xc27e]->\x582c, [\xc2a1,\xc2b4]->\x586b, [\xc2b5,\xc2fe]->\x5921, [\xc340,\xc353]->\x596b, [\xc354,\xc37e]->\x5a21, [\xc3a1,\xc3d3]->\x5a4c, [\xc3d4,\xc3fe]->\x5b21, [\xc440,\xc472]->\x5b4c, [\xc473,\xc47e]->\x5c21, [\xc4a1,\xc4f2]->\x5c2d, [\xc4f3,\xc4fe]->\x5d21, [\xc540,\xc57e]->\x5d2d, [\xc5a1,\xc5b3]->\x5d6c, [\xc5b4,\xc5fe]->\x5e21, [\xc640,\xc652]->\x5e6c, [\xc653,\xc67e]->\x5f21, [\xc6a1,\xc6d2]->\x5f4d, [\xc6d3,\xc6fe]->\x6021, [\xc740,\xc771]->\x604d, [\xc772,\xc77e]->\x6121, [\xc7a1,\xc7f1]->\x612e, [\xc7f2,\xc7fe]->\x6221
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ length 2
+ byte1 \xc9,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+ wc_encoding \x00020000
+ ct_encoding BIG5-E1:GL;BIG5-E1:GR
+ mb_conversion [\xc940,\xc97e]->\x2121, [\xc9a1,\xc9bf]->\x2160, [\xc9c0,\xc9fe]->\x2221, [\xca40,\xca5e]->\x2260, [\xca5f,\xca7e]->\x2321, [\xcaa1,\xcade]->\x2341, [\xcadf,\xcafe]->\x2421, [\xcb40,\xcb7d]->\x2441, [\xcb7e,\xcb7e]->\x2521, [\xcba1,\xcbfd]->\x2522, [\xcbfe,\xcbfe]->\x2621, [\xcc40,\xcc7e]->\x2622, [\xcca1,\xccbe]->\x2661, [\xccbf,\xccfe]->\x2721, [\xcd40,\xcd5d]->\x2761, [\xcd5e,\xcd7e]->\x2821, [\xcda1,\xcddd]->\x2842, [\xcdde,\xcdfe]->\x2921, [\xce40,\xce7c]->\x2942, [\xce7d,\xce7e]->\x2a21, [\xcea1,\xcefc]->\x2a23, [\xcefd,\xcefe]->\x2b21, [\xcf40,\xcf7e]->\x2b23, [\xcfa1,\xcfbd]->\x2b62, [\xcfbe,\xcffe]->\x2c21, [\xd040,\xd05c]->\x2c62, [\xd05d,\xd07e]->\x2d21, [\xd0a1,\xd0dc]->\x2d43, [\xd0dd,\xd0fe]->\x2e21, [\xd140,\xd17b]->\x2e43, [\xd17c,\xd17e]->\x2f21, [\xd1a1,\xd1fb]->\x2f24, [\xd1fc,\xd1fe]->\x3021, [\xd240,\xd27e]->\x3024, [\xd2a1,\xd2bc]->\x3063, [\xd2bd,\xd2fe]->\x3121, [\xd340,\xd35b]->\x3163, [\xd35c,\xd37e]->\x3221, [\xd3a1,\xd3db]->\x3244, [\xd3dc,\xd3fe]->\x3321, [\xd440,\xd47a]->\x3344, [\xd47b,\xd47e]->\x3421, [\xd4a1,\xd4fa]->\x3425, [\xd4fb,\xd4fe]->\x3521, [\xd540,\xd57e]->\x3525, [\xd5a1,\xd5bb]->\x3564, [\xd5bc,\xd5fe]->\x3621, [\xd640,\xd65a]->\x3664, [\xd65b,\xd67e]->\x3721, [\xd6a1,\xd6da]->\x3745, [\xd6db,\xd6fe]->\x3821, [\xd740,\xd779]->\x3845, [\xd77a,\xd77e]->\x3921, [\xd7a1,\xd7f9]->\x3926, [\xd7fa,\xd7fe]->\x3a21, [\xd840,\xd87e]->\x3a26, [\xd8a1,\xd8ba]->\x3a65, [\xd8bb,\xd8fe]->\x3b21, [\xd940,\xd959]->\x3b65, [\xd95a,\xd97e]->\x3c21, [\xd9a1,\xd9d9]->\x3c46, [\xd9da,\xd9fe]->\x3d21, [\xda40,\xda78]->\x3d46, [\xda79,\xda7e]->\x3e21, [\xdaa1,\xdaf8]->\x3e27, [\xdaf9,\xdafe]->\x3f21, [\xdb40,\xdb7e]->\x3f27, [\xdba1,\xdbb9]->\x3f66, [\xdbba,\xdbfe]->\x4021, [\xdc40,\xdc58]->\x4066, [\xdc59,\xdc7e]->\x4121, [\xdca1,\xdcd8]->\x4147, [\xdcd9,\xdcfe]->\x4221, [\xdd40,\xdd77]->\x4247, [\xdd78,\xdd7e]->\x4321, [\xdda1,\xddf7]->\x4328, [\xddf8,\xddfe]->\x4421, [\xde40,\xde7e]->\x4428, [\xdea1,\xdeb8]->\x4467, [\xdeb9,\xdefe]->\x4521, [\xdf40,\xdf57]->\x4567, [\xdf58,\xdf7e]->\x4621, [\xdfa1,\xdfd7]->\x4648, [\xdfd8,\xdffe]->\x4721, [\xe040,\xe076]->\x4748, [\xe077,\xe07e]->\x4821, [\xe0a1,\xe0f6]->\x4829, [\xe0f7,\xe0fe]->\x4921, [\xe140,\xe17e]->\x4929, [\xe1a1,\xe1b7]->\x4968, [\xe1b8,\xe1fe]->\x4a21, [\xe240,\xe256]->\x4a68, [\xe257,\xe27e]->\x4b21, [\xe2a1,\xe2d6]->\x4b49, [\xe2d7,\xe2fe]->\x4c21, [\xe340,\xe375]->\x4c49, [\xe376,\xe37e]->\x4d21, [\xe3a1,\xe3f5]->\x4d2a, [\xe3f6,\xe3fe]->\x4e21, [\xe440,\xe47e]->\x4e2a, [\xe4a1,\xe4b6]->\x4e69, [\xe4b7,\xe4fe]->\x4f21, [\xe540,\xe555]->\x4f69, [\xe556,\xe57e]->\x5021, [\xe5a1,\xe5d5]->\x504a, [\xe5d6,\xe5fe]->\x5121, [\xe640,\xe674]->\x514a, [\xe675,\xe67e]->\x5221, [\xe6a1,\xe6f4]->\x522b, [\xe6f5,\xe6fe]->\x5321, [\xe740,\xe77e]->\x532b, [\xe7a1,\xe7b5]->\x536a, [\xe7b6,\xe7fe]->\x5421, [\xe840,\xe854]->\x546a, [\xe855,\xe87e]->\x5521, [\xe8a1,\xe8d4]->\x554b, [\xe8d5,\xe8fe]->\x5621, [\xe940,\xe973]->\x564b, [\xe974,\xe97e]->\x5721, [\xe9a1,\xe9f3]->\x572c, [\xe9f4,\xe9fe]->\x5821, [\xea40,\xea7e]->\x582c, [\xeaa1,\xeab4]->\x586b, [\xeab5,\xeafe]->\x5921, [\xeb40,\xeb53]->\x596b, [\xeb54,\xeb7e]->\x5a21, [\xeba1,\xebd3]->\x5a4c, [\xebd4,\xebfe]->\x5b21, [\xec40,\xec72]->\x5b4c, [\xec73,\xec7e]->\x5c21, [\xeca1,\xecf2]->\x5c2d, [\xecf3,\xecfe]->\x5d21, [\xed40,\xed7e]->\x5d2d, [\xeda1,\xedb3]->\x5d6c, [\xedb4,\xedfe]->\x5e21, [\xee40,\xee52]->\x5e6c, [\xee53,\xee7e]->\x5f21, [\xeea1,\xeed2]->\x5f4d, [\xeed3,\xeefe]->\x6021, [\xef40,\xef71]->\x604d, [\xef72,\xef7e]->\x6121, [\xefa1,\xeff1]->\x612e, [\xeff2,\xeffe]->\x6221, [\xf040,\xf07e]->\x622e, [\xf0a1,\xf0b2]->\x626d, [\xf0b3,\xf0fe]->\x6321, [\xf140,\xf151]->\x636d, [\xf152,\xf17e]->\x6421, [\xf1a1,\xf1d1]->\x644e, [\xf1d2,\xf1fe]->\x6521, [\xf240,\xf270]->\x654e, [\xf271,\xf27e]->\x6621, [\xf2a1,\xf2f0]->\x662f, [\xf2f1,\xf2fe]->\x6721, [\xf340,\xf37e]->\x672f, [\xf3a1,\xf3b1]->\x676e, [\xf3b2,\xf3fe]->\x6821, [\xf440,\xf450]->\x686e, [\xf451,\xf47e]->\x6921, [\xf4a1,\xf4d0]->\x694f, [\xf4d1,\xf4fe]->\x6a21, [\xf540,\xf56f]->\x6a4f, [\xf570,\xf57e]->\x6b21, [\xf5a1,\xf5ef]->\x6b30, [\xf5f0,\xf5fe]->\x6c21, [\xf640,\xf67e]->\x6c30, [\xf6a1,\xf6b0]->\x6c6f, [\xf6b1,\xf6fe]->\x6d21, [\xf740,\xf74f]->\x6d6f, [\xf750,\xf77e]->\x6e21, [\xf7a1,\xf7cf]->\x6e50, [\xf7d0,\xf7fe]->\x6f21, [\xf840,\xf86e]->\x6f50, [\xf86f,\xf87e]->\x7021, [\xf8a1,\xf8ee]->\x7031, [\xf8ef,\xf8fe]->\x7121, [\xf940,\xf97e]->\x7131, [\xf9a1,\xf9af]->\x7170, [\xf9b0,\xf9fe]->\x7221
+}
+
+END XLC_XLOCALE
diff --git a/nls/zh_TW/Compose.pre b/nls/zh_TW/Compose.pre
new file mode 100644
index 00000000..2a4ef702
--- /dev/null
+++ b/nls/zh_TW/Compose.pre
@@ -0,0 +1,15 @@
+XCOMM
+XCOMM zh_TW Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM $XFree86: xc/nls/Compose/zh_TW,v 1.2 2001/04/26 21:09:40 dawes Exp $
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/nls/zh_TW/XI18N_OBJS b/nls/zh_TW/XI18N_OBJS
index 0f471dd0..66e6c084 100644
--- a/nls/zh_TW/XI18N_OBJS
+++ b/nls/zh_TW/XI18N_OBJS
@@ -2,6 +2,7 @@
#
# XI18N objects table for zh_TW locale
#
+XLC common/xlocale _XlcEucLoader # XLC_open
XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/src/AllPlanes.c b/src/AllPlanes.c
index b636159e..4829babe 100644
--- a/src/AllPlanes.c
+++ b/src/AllPlanes.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/AllPlanes.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -61,7 +62,7 @@ unsigned long *rmask, *gmask, *bmask; /* CARD32 */ /* RETURN */
*bmask = rep.blueMask;
/* sizeof(CARD32) = 4 */
- _XRead32 (dpy, (char *) pixels, (long)(ncolors * 4));
+ _XRead32 (dpy, (long *) pixels, (long)(ncolors * 4));
}
UnlockDisplay(dpy);
diff --git a/src/AllowEv.c b/src/AllowEv.c
index b12e8f61..557c7e49 100644
--- a/src/AllowEv.c
+++ b/src/AllowEv.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/AllowEv.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XAllowEvents(dpy, mode, time)
register Display *dpy;
int mode;
diff --git a/src/AutoRep.c b/src/AutoRep.c
index beb9a8f1..bbc30e70 100644
--- a/src/AutoRep.c
+++ b/src/AutoRep.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/AutoRep.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XAutoRepeatOn (dpy)
register Display *dpy;
{
@@ -36,6 +38,7 @@ register Display *dpy;
return 1;
}
+int
XAutoRepeatOff (dpy)
register Display *dpy;
{
diff --git a/src/Backgnd.c b/src/Backgnd.c
index e5b67666..748ccd27 100644
--- a/src/Backgnd.c
+++ b/src/Backgnd.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Backgnd.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XSetWindowBackground(dpy, w, pixel)
register Display *dpy;
Window w;
diff --git a/src/BdrWidth.c b/src/BdrWidth.c
index 2550fda3..0473339c 100644
--- a/src/BdrWidth.c
+++ b/src/BdrWidth.c
@@ -27,9 +27,11 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/BdrWidth.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XSetWindowBorderWidth(dpy, w, width)
Display *dpy;
Window w;
diff --git a/src/Bell.c b/src/Bell.c
index 7c620206..8f048b80 100644
--- a/src/Bell.c
+++ b/src/Bell.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Bell.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XBell(dpy, percent)
register Display *dpy;
int percent;
diff --git a/src/Border.c b/src/Border.c
index 5e71ee90..d692da2d 100644
--- a/src/Border.c
+++ b/src/Border.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Border.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XSetWindowBorder(dpy, w, pixel)
register Display *dpy;
Window w;
diff --git a/src/ChAccCon.c b/src/ChAccCon.c
index 4366f695..3e449aad 100644
--- a/src/ChAccCon.c
+++ b/src/ChAccCon.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChAccCon.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
#include "Xlibint.h"
+int
XEnableAccessControl(dpy)
register Display *dpy;
@@ -34,6 +36,7 @@ XEnableAccessControl(dpy)
return XSetAccessControl(dpy, EnableAccess);
}
+int
XDisableAccessControl(dpy)
register Display *dpy;
@@ -41,6 +44,7 @@ XDisableAccessControl(dpy)
return XSetAccessControl(dpy, DisableAccess);
}
+int
XSetAccessControl(dpy, mode)
register Display *dpy;
int mode;
diff --git a/src/ChActPGb.c b/src/ChActPGb.c
index adc2036e..1385679c 100644
--- a/src/ChActPGb.c
+++ b/src/ChActPGb.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChActPGb.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
XChangeActivePointerGrab(dpy, event_mask, curs, time)
register Display *dpy;
unsigned int event_mask; /* CARD16 */
diff --git a/src/ChClMode.c b/src/ChClMode.c
index 0b2657eb..dabed0aa 100644
--- a/src/ChClMode.c
+++ b/src/ChClMode.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChClMode.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
XSetCloseDownMode(dpy, mode)
register Display *dpy;
int mode;
diff --git a/src/ChCmap.c b/src/ChCmap.c
index d6aaa892..ffae9ef1 100644
--- a/src/ChCmap.c
+++ b/src/ChCmap.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChCmap.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
XSetWindowColormap(dpy, w, colormap)
register Display *dpy;
Window w;
diff --git a/src/ChGC.c b/src/ChGC.c
index d7d536a6..f4261456 100644
--- a/src/ChGC.c
+++ b/src/ChGC.c
@@ -24,9 +24,15 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChGC.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+/* in ChGC.c */
+extern int _XUpdateGCCache(register GC gc, register unsigned long mask,
+ register XGCValues *attr);
+
+int
XChangeGC (dpy, gc, valuemask, values)
register Display *dpy;
GC gc;
diff --git a/src/ChKeyCon.c b/src/ChKeyCon.c
index c1b3fdce..c6e1f1ac 100644
--- a/src/ChKeyCon.c
+++ b/src/ChKeyCon.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChKeyCon.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
XChangeKeyboardControl(dpy, mask, value_list)
register Display *dpy;
unsigned long mask;
diff --git a/src/ChPntCon.c b/src/ChPntCon.c
index ce0776d9..44aa8622 100644
--- a/src/ChPntCon.c
+++ b/src/ChPntCon.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChPntCon.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
XChangePointerControl(dpy, do_acc, do_thresh, acc_numerator,
acc_denominator, threshold)
register Display *dpy;
diff --git a/src/ChProp.c b/src/ChProp.c
index 4cfbe96d..603dd8a1 100644
--- a/src/ChProp.c
+++ b/src/ChProp.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChProp.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XChangeProperty (
register Display *dpy,
diff --git a/src/ChSaveSet.c b/src/ChSaveSet.c
index 7adb08cf..cf672813 100644
--- a/src/ChSaveSet.c
+++ b/src/ChSaveSet.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChSaveSet.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+int
XChangeSaveSet(dpy, win, mode)
register Display *dpy;
Window win;
@@ -43,6 +45,7 @@ int mode;
return 1;
}
+int
XAddToSaveSet(dpy, win)
register Display *dpy;
Window win;
@@ -50,6 +53,7 @@ XAddToSaveSet(dpy, win)
return XChangeSaveSet(dpy,win,SetModeInsert);
}
+int
XRemoveFromSaveSet (dpy, win)
register Display *dpy;
Window win;
diff --git a/src/ChWAttrs.c b/src/ChWAttrs.c
index 2c05cf55..ed888156 100644
--- a/src/ChWAttrs.c
+++ b/src/ChWAttrs.c
@@ -24,15 +24,19 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChWAttrs.c,v 1.4 2001/12/14 19:53:57 dawes Exp $ */
#include "Xlibint.h"
+extern void _XProcessWindowAttributes();
+
#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
CWBorderPixel|CWBitGravity|CWWinGravity|\
CWBackingStore|CWBackingPlanes|CWBackingPixel|\
CWOverrideRedirect|CWSaveUnder|CWEventMask|\
CWDontPropagate|CWColormap|CWCursor)
+int
XChangeWindowAttributes (dpy, w, valuemask, attributes)
register Display *dpy;
Window w;
@@ -40,7 +44,6 @@ XChangeWindowAttributes (dpy, w, valuemask, attributes)
XSetWindowAttributes *attributes;
{
register xChangeWindowAttributesReq *req;
- extern void _XProcessWindowAttributes();
LockDisplay(dpy);
GetReq(ChangeWindowAttributes,req);
diff --git a/src/ChWindow.c b/src/ChWindow.c
index b0319aa6..dbabe40b 100644
--- a/src/ChWindow.c
+++ b/src/ChWindow.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChWindow.c,v 1.6 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XResizeWindow(dpy, w, width, height)
register Display *dpy;
Window w;
diff --git a/src/ChkMaskEv.c b/src/ChkMaskEv.c
index cc511720..315dfce2 100644
--- a/src/ChkMaskEv.c
+++ b/src/ChkMaskEv.c
@@ -24,16 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChkMaskEv.c,v 3.6 2001/12/14 19:53:58 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-extern long Const _Xevent_to_mask[];
+extern long const _Xevent_to_mask[];
#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
@@ -51,7 +47,7 @@ Bool XCheckMaskEvent (dpy, mask, event)
register XEvent *event; /* XEvent to be filled in. */
{
register _XQEvent *prev, *qelt;
- unsigned long qe_serial;
+ unsigned long qe_serial = 0;
int n; /* time through count */
LockDisplay(dpy);
diff --git a/src/ChkTypEv.c b/src/ChkTypEv.c
index dd45be0b..177737ae 100644
--- a/src/ChkTypEv.c
+++ b/src/ChkTypEv.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChkTypEv.c,v 1.3 2001/12/14 19:53:58 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -40,7 +41,7 @@ Bool XCheckTypedEvent (dpy, type, event)
register XEvent *event; /* XEvent to be filled in. */
{
register _XQEvent *prev, *qelt;
- unsigned long qe_serial;
+ unsigned long qe_serial = 0;
int n; /* time through count */
LockDisplay(dpy);
diff --git a/src/ChkTypWEv.c b/src/ChkTypWEv.c
index 09b48b5d..7483bfa9 100644
--- a/src/ChkTypWEv.c
+++ b/src/ChkTypWEv.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChkTypWEv.c,v 1.3 2001/12/14 19:53:58 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -41,7 +42,7 @@ Bool XCheckTypedWindowEvent (dpy, w, type, event)
register XEvent *event; /* XEvent to be filled in. */
{
register _XQEvent *prev, *qelt;
- unsigned long qe_serial;
+ unsigned long qe_serial = 0;
int n; /* time through count */
LockDisplay(dpy);
diff --git a/src/ChkWinEv.c b/src/ChkWinEv.c
index 27d4c05e..f7245544 100644
--- a/src/ChkWinEv.c
+++ b/src/ChkWinEv.c
@@ -24,16 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ChkWinEv.c,v 3.6 2001/12/14 19:53:58 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-extern long Const _Xevent_to_mask[];
+extern long const _Xevent_to_mask[];
#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
Button4MotionMask|Button5MotionMask)
@@ -51,7 +47,7 @@ Bool XCheckWindowEvent (dpy, w, mask, event)
register XEvent *event; /* XEvent to be filled in. */
{
register _XQEvent *prev, *qelt;
- unsigned long qe_serial;
+ unsigned long qe_serial = 0;
int n; /* time through count */
LockDisplay(dpy);
diff --git a/src/CirWin.c b/src/CirWin.c
index 4099900f..3d7760f1 100644
--- a/src/CirWin.c
+++ b/src/CirWin.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CirWin.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XCirculateSubwindows(dpy, w, direction)
register Display *dpy;
Window w;
diff --git a/src/CirWinDn.c b/src/CirWinDn.c
index c3dce796..55711a3c 100644
--- a/src/CirWinDn.c
+++ b/src/CirWinDn.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CirWinDn.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XCirculateSubwindowsDown(dpy,w)
register Display *dpy;
Window w;
diff --git a/src/CirWinUp.c b/src/CirWinUp.c
index 65ff8645..b92486c7 100644
--- a/src/CirWinUp.c
+++ b/src/CirWinUp.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CirWinUp.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XCirculateSubwindowsUp(dpy, w)
register Display *dpy;
Window w;
diff --git a/src/ClDisplay.c b/src/ClDisplay.c
index 0ea2fc54..223a4c2d 100644
--- a/src/ClDisplay.c
+++ b/src/ClDisplay.c
@@ -27,17 +27,22 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ClDisplay.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
extern void _XFreeDisplayStructure();
+/* ConnDis.c */
+extern int _XDisconnectDisplay();
+
/*
* XCloseDisplay - XSync the connection to the X Server, close the connection,
* and free all associated storage. Extension close procs should only free
* memory and must be careful about the types of requests they generate.
*/
+int
XCloseDisplay (dpy)
register Display *dpy;
{
diff --git a/src/Clear.c b/src/Clear.c
index 54fde13e..125fba55 100644
--- a/src/Clear.c
+++ b/src/Clear.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Clear.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XClearWindow(dpy, w)
register Display *dpy;
Window w;
diff --git a/src/ClearArea.c b/src/ClearArea.c
index 4028ae44..e42be06c 100644
--- a/src/ClearArea.c
+++ b/src/ClearArea.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ClearArea.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XClearArea (dpy, w, x, y, width, height, exposures)
register Display *dpy;
Window w;
diff --git a/src/ConfWind.c b/src/ConfWind.c
index f4bb4239..a2f9b6dd 100644
--- a/src/ConfWind.c
+++ b/src/ConfWind.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ConfWind.c,v 1.4 2001/12/14 19:53:58 dawes Exp $ */
#include "Xlibint.h"
+int
XMoveResizeWindow(dpy, w, x, y, width, height)
register Display *dpy;
Window w;
diff --git a/src/ConnDis.c b/src/ConnDis.c
index 9ee55118..548ace9c 100644
--- a/src/ConnDis.c
+++ b/src/ConnDis.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ConnDis.c,v 3.24 2001/12/14 19:53:58 dawes Exp $ */
/*
* This file contains operating system dependencies.
@@ -37,8 +38,12 @@ in this Software without prior written authorization from The Open Group.
#include <stdio.h>
#include <ctype.h>
-#ifndef WIN32
+#if !defined(WIN32)
+#ifndef Lynx
#include <sys/socket.h>
+#else
+#include <socket.h>
+#endif
#endif
#ifndef X_CONNECTION_RETRIES /* number retries on ECONNREFUSED */
@@ -109,9 +114,9 @@ _X11TransConnectDisplay (display_name, fullnamep, dpynump, screenp,
char *pdpynum = NULL; /* start of dpynum of display */
char *pscrnum = NULL; /* start of screen of display */
Bool dnet = False; /* if true, then DECnet format */
- int idisplay; /* required display number */
+ int idisplay = 0; /* required display number */
int iscreen = 0; /* optional screen number */
- int (*connfunc)(); /* method to create connection */
+ /* int (*connfunc)(); */ /* method to create connection */
int len, hostlen; /* length tmp variable */
int retry; /* retry counter */
char addrbuf[128]; /* final address passed to
@@ -250,18 +255,24 @@ _X11TransConnectDisplay (display_name, fullnamep, dpynump, screenp,
* is "unix", then choose BSD UNIX domain sockets (if configured).
*/
-#if defined(TCPCONN) || defined(UNIXCONN) || defined(LOCALCONN)
+#if defined(TCPCONN) || defined(UNIXCONN) || defined(LOCALCONN) || defined(MNX_TCPCONN) || defined(OS2PIPECONN)
if (!pprotocol) {
if (!phostname)
-#if defined(UNIXCONN) || defined(LOCALCONN)
+#if defined(UNIXCONN) || defined(LOCALCONN) || defined(OS2PIPECONN)
pprotocol = copystring ("local", 5);
else
#endif
pprotocol = copystring ("tcp", 3);
}
+#else
+#if defined(AMRPCCONN)
+ if (!pprotocol) {
+ pprotocol = copystring ("amcon", 5);
+ }
+#endif
#endif
-#if defined(UNIXCONN) || defined(LOCALCONN)
+#if defined(UNIXCONN) || defined(LOCALCONN) || defined(OS2PIPECONN)
/*
* Now that the defaults have been established, see if we have any
* special names that we have to override:
@@ -288,7 +299,9 @@ _X11TransConnectDisplay (display_name, fullnamep, dpynump, screenp,
}
#endif
+#if defined(LOCALCONN) && defined(TCPCONN)
connect:
+#endif
/*
* This seems kind of backwards, but we need to put the protocol,
* host, and port back together to pass to _X11TransOpenCOTSClient().
@@ -301,10 +314,10 @@ _X11TransConnectDisplay (display_name, fullnamep, dpynump, screenp,
if (olen > sizeof addrbuf) address = Xmalloc (olen);
}
- sprintf(address,"%s/%s:%s",
+ sprintf(address,"%s/%s:%d",
pprotocol ? pprotocol : "",
phostname ? phostname : "",
- pdpynum );
+ idisplay );
/*
* Make the connection, also need to get the auth address info for
@@ -475,8 +488,6 @@ XtransConnInfo trans_conn;
-static int padlength[4] = {0, 3, 2, 1}; /* make sure auth is multiple of 4 */
-
Bool
_XSendClientPrefix (dpy, client, auth_proto, auth_string, prefix)
Display *dpy;
@@ -486,7 +497,7 @@ _XSendClientPrefix (dpy, client, auth_proto, auth_string, prefix)
{
int auth_length = client->nbytesAuthProto;
int auth_strlen = client->nbytesAuthString;
- char padbuf[3]; /* for padding to 4x bytes */
+ static char padbuf[3]; /* for padding to 4x bytes */
int pad;
struct iovec iovarray[5], *iov = iovarray;
int niov = 0;
@@ -502,12 +513,12 @@ _XSendClientPrefix (dpy, client, auth_proto, auth_string, prefix)
*/
if (auth_length > 0) {
add_to_iov (auth_proto, auth_length);
- pad = padlength [auth_length & 3];
+ pad = -auth_length & 3; /* pad auth_length to a multiple of 4 */
if (pad) add_to_iov (padbuf, pad);
}
if (auth_strlen > 0) {
add_to_iov (auth_string, auth_strlen);
- pad = padlength [auth_strlen & 3];
+ pad = -auth_strlen & 3; /* pad auth_strlen to a multiple of 4 */
if (pad) add_to_iov (padbuf, pad);
}
@@ -544,6 +555,13 @@ _XSendClientPrefix (dpy, client, auth_proto, auth_string, prefix)
#endif
#ifdef SECURE_RPC
+#if defined(sun) && defined(SVR4) /* && ????? */
+/*
+ * I'm aware this is backwards, but #define'ing PORTMAP, as suggested in the
+ * man pages, doesn't work either.
+ */
+#define authdes_seccreate authdes_create
+#endif
#include <rpc/rpc.h>
#ifdef ultrix
#include <time.h>
@@ -552,14 +570,9 @@ _XSendClientPrefix (dpy, client, auth_proto, auth_string, prefix)
#endif
#ifdef HASXDMAUTH
-#ifdef X_NOT_STDC_ENV
-#define Time_t long
-extern Time_t time ();
-#else
#include <time.h>
#define Time_t time_t
#endif
-#endif
/*
* First, a routine for setting authorization data
@@ -588,7 +601,7 @@ static char *default_xauth_names[] = {
"MIT-MAGIC-COOKIE-1"
};
-static int default_xauth_lengths[] = {
+static _Xconst int default_xauth_lengths[] = {
#ifdef K5AUTH
14, /* strlen ("MIT-KERBEROS-5") */
#endif
@@ -604,7 +617,7 @@ static int default_xauth_lengths[] = {
#define NUM_DEFAULT_AUTH (sizeof (default_xauth_names) / sizeof (default_xauth_names[0]))
static char **xauth_names = default_xauth_names;
-static int *xauth_lengths = default_xauth_lengths;
+static _Xconst int *xauth_lengths = default_xauth_lengths;
static int xauth_names_length = NUM_DEFAULT_AUTH;
diff --git a/src/Context.c b/src/Context.c
index f924c258..ddccbe9a 100644
--- a/src/Context.c
+++ b/src/Context.c
@@ -50,6 +50,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Context.c,v 1.5 2001/12/14 19:53:58 dawes Exp $ */
/* This module implements a simple sparse array.
@@ -100,8 +101,7 @@ static DB NullDB = (DB)0;
/* Resize the given db */
-static void ResizeTable(db)
- register DB db;
+static void ResizeTable(DB db)
{
TableEntry *otable;
register TableEntry entry, next, *pold, *head;
@@ -128,8 +128,7 @@ static void ResizeTable(db)
Xfree((char *) otable);
}
-static void _XFreeContextDB(display)
- Display *display;
+static void _XFreeContextDB(Display *display)
{
register DB db;
register int i;
diff --git a/src/ConvSel.c b/src/ConvSel.c
index b7148a98..a0afd545 100644
--- a/src/ConvSel.c
+++ b/src/ConvSel.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ConvSel.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XConvertSelection(dpy, selection, target, property, requestor, time)
register Display *dpy;
Atom selection, target;
diff --git a/src/CopyArea.c b/src/CopyArea.c
index 5a4c42ba..7f6a2682 100644
--- a/src/CopyArea.c
+++ b/src/CopyArea.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CopyArea.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XCopyArea(dpy, src_drawable, dst_drawable, gc,
src_x, src_y, width, height,
dst_x, dst_y)
diff --git a/src/CopyCmap.c b/src/CopyCmap.c
index a6873765..5287454b 100644
--- a/src/CopyCmap.c
+++ b/src/CopyCmap.c
@@ -24,8 +24,15 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CopyCmap.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+#include "Xcmsint.h"
+
+/* cmsCmap.c */
+extern XcmsCmapRec * _XcmsCopyCmapRecAndFree(Display *dpy,
+ Colormap src_cmap,
+ Colormap copy_cmap);
Colormap XCopyColormapAndFree(dpy, src_cmap)
register Display *dpy;
diff --git a/src/CopyGC.c b/src/CopyGC.c
index ec228794..592986fd 100644
--- a/src/CopyGC.c
+++ b/src/CopyGC.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CopyGC.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XCopyGC (dpy, srcGC, mask, destGC)
register Display *dpy;
unsigned long mask; /* which ones to set initially */
diff --git a/src/CopyPlane.c b/src/CopyPlane.c
index 1df2b14a..f9c5728b 100644
--- a/src/CopyPlane.c
+++ b/src/CopyPlane.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CopyPlane.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XCopyPlane(dpy, src_drawable, dst_drawable, gc,
src_x, src_y, width, height,
dst_x, dst_y, bit_plane)
diff --git a/src/CrCmap.c b/src/CrCmap.c
index 3c1878df..b5d28d6b 100644
--- a/src/CrCmap.c
+++ b/src/CrCmap.c
@@ -24,8 +24,14 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CrCmap.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+#include "Xcmsint.h"
+
+/* EXTERNS */
+/* cmsCmap.c */
+extern XcmsCmapRec * _XcmsAddCmapRec();
Colormap XCreateColormap(dpy, w, visual, alloc)
register Display *dpy;
diff --git a/src/CrCursor.c b/src/CrCursor.c
index 93c7a006..16a1701a 100644
--- a/src/CrCursor.c
+++ b/src/CrCursor.c
@@ -24,9 +24,21 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CrCursor.c,v 1.4 2002/11/23 19:27:48 tsi Exp $ */
#include "Xlibint.h"
+#ifdef USE_DYNAMIC_XCURSOR
+Cursor
+_XTryShapeBitmapCursor (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+#endif
+
Cursor XCreatePixmapCursor(dpy, source, mask, foreground, background, x, y)
register Display *dpy;
Pixmap source, mask;
@@ -37,6 +49,12 @@ Cursor XCreatePixmapCursor(dpy, source, mask, foreground, background, x, y)
register xCreateCursorReq *req;
Cursor cid;
+#ifdef USE_DYNAMIC_XCURSOR
+ cid = _XTryShapeBitmapCursor (dpy, source, mask,
+ foreground, background, x, y);
+ if (cid)
+ return cid;
+#endif
LockDisplay(dpy);
GetReq(CreateCursor, req);
req->cid = cid = XAllocID(dpy);
diff --git a/src/CrGC.c b/src/CrGC.c
index 969f6d88..789538cb 100644
--- a/src/CrGC.c
+++ b/src/CrGC.c
@@ -24,16 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CrGC.c,v 3.6 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-static XGCValues Const initial_GC = {
+static XGCValues const initial_GC = {
GXcopy, /* function */
AllPlanes, /* plane_mask */
0L, /* foreground */
@@ -60,6 +55,7 @@ static XGCValues Const initial_GC = {
};
static void _XGenerateGCList();
+int _XUpdateGCCache();
GC XCreateGC (dpy, d, valuemask, values)
register Display *dpy;
@@ -160,6 +156,7 @@ _XGenerateGCList (dpy, gc, req)
}
+int
_XUpdateGCCache (gc, mask, attr)
register unsigned long mask;
register XGCValues *attr;
diff --git a/src/CrGlCur.c b/src/CrGlCur.c
index d6fc4039..a0535f2e 100644
--- a/src/CrGlCur.c
+++ b/src/CrGlCur.c
@@ -24,21 +24,212 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CrGlCur.c,v 1.6 2002/09/05 18:17:31 keithp Exp $ */
#include "Xlibint.h"
+#ifdef USE_DYNAMIC_XCURSOR
+
+#include <stdio.h>
+#include <string.h>
+#if defined(hpux)
+#include <dl.h>
+#else
+#include <dlfcn.h>
+#endif
+
+#if defined(hpux)
+typedef shl_dt XModuleType;
+#else
+typedef void *XModuleType;
+#endif
+
+#ifndef LIBXCURSOR
+#define LIBXCURSOR "libXcursor.so"
+#endif
+
+static char libraryName[] = LIBXCURSOR;
+
+static XModuleType
+open_library (void)
+{
+ char *library = libraryName;
+ char *dot;
+ XModuleType module;
+ for (;;)
+ {
+#if defined(hpux)
+ module = shl_load(library, BIND_DEFERRED, 0L);
+#else
+ module = dlopen(library, RTLD_LAZY);
+#endif
+ if (module)
+ return module;
+ dot = strrchr (library, '.');
+ if (!dot)
+ break;
+ *dot = '\0';
+ }
+ return 0;
+}
+
+static void *
+fetch_symbol (XModuleType module, char *under_symbol)
+{
+ void *result = NULL;
+ char *symbol = under_symbol + 1;
+#if defined(hpux)
+ int getsyms_cnt, i;
+ struct shl_symbol *symbols;
+
+ getsyms_cnt = shl_getsymbols(module, TYPE_PROCEDURE,
+ EXPORT_SYMBOLS, malloc, &symbols);
+
+ for(i=0; i<getsyms_cnt; i++) {
+ if(!strcmp(symbols[i].name, symbol)) {
+ result = symbols[i].value;
+ break;
+ }
+ }
+
+ if(getsyms_cnt > 0) {
+ free(symbols);
+ }
+#else
+ result = dlsym (module, symbol);
+ if (!result)
+ result = dlsym (module, under_symbol);
+#endif
+ return result;
+}
+
+typedef void (*NoticeCreateBitmapFunc) (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+
+typedef void (*NoticePutBitmapFunc) (Display *dpy,
+ Drawable draw,
+ XImage *image);
+
+typedef Cursor (*TryShapeBitmapCursorFunc) (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+
+typedef Cursor (*TryShapeCursorFunc) (Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background);
+
+static XModuleType _XcursorModule;
+static Bool _XcursorModuleTried;
+
+#define GetFunc(type,name,ret) {\
+ static Bool been_here; \
+ static type staticFunc; \
+ \
+ _XLockMutex (_Xglobal_lock); \
+ if (!been_here) \
+ { \
+ been_here = True; \
+ if (!_XcursorModuleTried) \
+ { \
+ _XcursorModuleTried = True; \
+ _XcursorModule = open_library (); \
+ } \
+ if (_XcursorModule) \
+ staticFunc = (type) fetch_symbol (_XcursorModule, "_" name); \
+ } \
+ ret = staticFunc; \
+ _XUnlockMutex (_Xglobal_lock); \
+}
+
+Cursor
+_XTryShapeCursor (Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background)
+{
+ TryShapeCursorFunc func;
+
+ GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func);
+ if (func)
+ return (*func) (dpy, source_font, mask_font, source_char, mask_char,
+ foreground, background);
+ return None;
+}
+
+void
+_XNoticeCreateBitmap (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height)
+{
+ NoticeCreateBitmapFunc func;
+
+ GetFunc (NoticeCreateBitmapFunc, "XcursorNoticeCreateBitmap", func);
+ if (func)
+ (*func) (dpy, pid, width, height);
+}
+
+void
+_XNoticePutBitmap (Display *dpy,
+ Drawable draw,
+ XImage *image)
+{
+ NoticePutBitmapFunc func;
+
+ GetFunc (NoticePutBitmapFunc, "XcursorNoticePutBitmap", func);
+ if (func)
+ (*func) (dpy, draw, image);
+}
+
+Cursor
+_XTryShapeBitmapCursor (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y)
+{
+ TryShapeBitmapCursorFunc func;
+
+ GetFunc (TryShapeBitmapCursorFunc, "XcursorTryShapeBitmapCursor", func);
+ if (func)
+ return (*func) (dpy, source, mask, foreground, background, x, y);
+ return None;
+}
+#endif
+
Cursor XCreateGlyphCursor(dpy, source_font, mask_font,
source_char, mask_char,
foreground, background)
register Display *dpy;
Font source_font, mask_font;
unsigned int source_char, mask_char;
- XColor *foreground, *background;
+ XColor _Xconst *foreground, *background;
{
Cursor cid;
register xCreateGlyphCursorReq *req;
+#ifdef USE_DYNAMIC_XCURSOR
+ cid = _XTryShapeCursor (dpy, source_font, mask_font,
+ source_char, mask_char, foreground, background);
+ if (cid)
+ return cid;
+#endif
LockDisplay(dpy);
GetReq(CreateGlyphCursor, req);
cid = req->cid = XAllocID(dpy);
diff --git a/src/CrPixmap.c b/src/CrPixmap.c
index 2505f48a..d04168e0 100644
--- a/src/CrPixmap.c
+++ b/src/CrPixmap.c
@@ -24,9 +24,18 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/CrPixmap.c,v 1.4 2002/11/23 19:27:49 tsi Exp $ */
#include "Xlibint.h"
+#ifdef USE_DYNAMIC_XCURSOR
+void
+_XNoticeCreateBitmap (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+#endif
+
Pixmap XCreatePixmap (dpy, d, width, height, depth)
register Display *dpy;
Drawable d;
@@ -44,6 +53,10 @@ Pixmap XCreatePixmap (dpy, d, width, height, depth)
pid = req->pid = XAllocID(dpy);
UnlockDisplay(dpy);
SyncHandle();
+#ifdef USE_DYNAMIC_XCURSOR
+ if (depth == 1)
+ _XNoticeCreateBitmap (dpy, pid, width, height);
+#endif
return (pid);
}
diff --git a/src/Cursor.c b/src/Cursor.c
index 55ff456c..68157ea1 100644
--- a/src/Cursor.c
+++ b/src/Cursor.c
@@ -24,10 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Cursor.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
-static XColor foreground = { 0, 0, 0, 0 }; /* black */
-static XColor background = { 0, 65535, 65535, 65535 }; /* white */
+static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */
+static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */
Cursor XCreateFontCursor(dpy, which)
Display *dpy;
diff --git a/src/DefCursor.c b/src/DefCursor.c
index d4eadea2..b4193bec 100644
--- a/src/DefCursor.c
+++ b/src/DefCursor.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DefCursor.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDefineCursor (dpy, w, cursor)
register Display *dpy;
Window w;
diff --git a/src/DelProp.c b/src/DelProp.c
index 11bf3a3d..4933243e 100644
--- a/src/DelProp.c
+++ b/src/DelProp.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DelProp.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDeleteProperty(dpy, window, property)
register Display *dpy;
Window window;
diff --git a/src/DestSubs.c b/src/DestSubs.c
index 98aadd6b..d31feaac 100644
--- a/src/DestSubs.c
+++ b/src/DestSubs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DestSubs.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDestroySubwindows(dpy, win)
register Display *dpy;
Window win;
diff --git a/src/DestWind.c b/src/DestWind.c
index 319e4ec3..b05d7308 100644
--- a/src/DestWind.c
+++ b/src/DestWind.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DestWind.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDestroyWindow (dpy, w)
register Display *dpy;
Window w;
diff --git a/src/DrArc.c b/src/DrArc.c
index 466e7e15..f1e099ab 100644
--- a/src/DrArc.c
+++ b/src/DrArc.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrArc.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
/* Note to future maintainers: XDrawArc does NOT batch successive PolyArc
requests into a single request like XDrawLine, XDrawPoint, etc.
@@ -33,6 +34,7 @@ in this Software without prior written authorization from The Open Group.
#include "Xlibint.h"
+int
XDrawArc(dpy, d, gc, x, y, width, height, angle1, angle2)
register Display *dpy;
Drawable d;
diff --git a/src/DrArcs.c b/src/DrArcs.c
index 9f8ef96a..8ba32a97 100644
--- a/src/DrArcs.c
+++ b/src/DrArcs.c
@@ -24,11 +24,13 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrArcs.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
#define arc_scale (SIZEOF(xArc) / 4)
+int
XDrawArcs(dpy, d, gc, arcs, n_arcs)
register Display *dpy;
Drawable d;
diff --git a/src/DrLine.c b/src/DrLine.c
index 6b17fbe5..aa54790e 100644
--- a/src/DrLine.c
+++ b/src/DrLine.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrLine.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
@@ -32,6 +33,7 @@ in this Software without prior written authorization from The Open Group.
#define wsize (SIZEOF(xPolySegmentReq) + WLNSPERBATCH * SIZEOF(xSegment))
#define zsize (SIZEOF(xPolySegmentReq) + ZLNSPERBATCH * SIZEOF(xSegment))
+int
XDrawLine (dpy, d, gc, x1, y1, x2, y2)
register Display *dpy;
Drawable d;
diff --git a/src/DrLines.c b/src/DrLines.c
index 05b0d5d7..ace8062f 100644
--- a/src/DrLines.c
+++ b/src/DrLines.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrLines.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDrawLines (dpy, d, gc, points, npoints, mode)
register Display *dpy;
Drawable d;
diff --git a/src/DrPoint.c b/src/DrPoint.c
index 390e9dad..8c858a22 100644
--- a/src/DrPoint.c
+++ b/src/DrPoint.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrPoint.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
@@ -31,6 +32,7 @@ in this Software without prior written authorization from The Open Group.
#define size (SIZEOF(xPolyPointReq) + PTSPERBATCH * SIZEOF(xPoint))
+int
XDrawPoint(dpy, d, gc, x, y)
register Display *dpy;
Drawable d;
diff --git a/src/DrPoints.c b/src/DrPoints.c
index c261be0d..7d08f3eb 100644
--- a/src/DrPoints.c
+++ b/src/DrPoints.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrPoints.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDrawPoints(dpy, d, gc, points, n_points, mode)
register Display *dpy;
Drawable d;
diff --git a/src/DrRect.c b/src/DrRect.c
index 0c3c48e4..9860035a 100644
--- a/src/DrRect.c
+++ b/src/DrRect.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrRect.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
@@ -32,6 +33,7 @@ in this Software without prior written authorization from The Open Group.
#define wsize (SIZEOF(xPolyRectangleReq) + WRCTSPERBATCH * SIZEOF(xRectangle))
#define zsize (SIZEOF(xPolyRectangleReq) + ZRCTSPERBATCH * SIZEOF(xRectangle))
+int
XDrawRectangle(dpy, d, gc, x, y, width, height)
register Display *dpy;
Drawable d;
diff --git a/src/DrRects.c b/src/DrRects.c
index ac87bd9b..c6a1e095 100644
--- a/src/DrRects.c
+++ b/src/DrRects.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrRects.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDrawRectangles(dpy, d, gc, rects, n_rects)
register Display *dpy;
Drawable d;
diff --git a/src/DrSegs.c b/src/DrSegs.c
index 41c4ea4a..1a7e6340 100644
--- a/src/DrSegs.c
+++ b/src/DrSegs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/DrSegs.c,v 1.4 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
+int
XDrawSegments (dpy, d, gc, segments, nsegments)
register Display *dpy;
Drawable d;
diff --git a/src/ErrDes.c b/src/ErrDes.c
index a7f82cc7..9ea3f884 100644
--- a/src/ErrDes.c
+++ b/src/ErrDes.c
@@ -48,6 +48,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/ErrDes.c,v 3.10 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
#include <X11/Xos.h>
@@ -58,17 +59,11 @@ SOFTWARE.
#define ERRORDB "/usr/lib/X11/XErrorDB"
#endif
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
/*
* descriptions of errors in Section 4 of Protocol doc (pp. 350-351); more
* verbose descriptions are given in the error database
*/
-static Const char * Const _XErrorList[] = {
+static const char * const _XErrorList[] = {
/* No error */ "no error",
/* BadRequest */ "BadRequest",
/* BadValue */ "BadValue",
@@ -90,6 +85,7 @@ static Const char * Const _XErrorList[] = {
};
+int
XGetErrorText(dpy, code, buffer, nbytes)
register int code;
register Display *dpy;
@@ -125,6 +121,7 @@ XGetErrorText(dpy, code, buffer, nbytes)
return 0;
}
+int
#if NeedFunctionPrototypes
/*ARGSUSED*/
XGetErrorDatabaseText(
diff --git a/src/ErrHndlr.c b/src/ErrHndlr.c
index b7f6418b..9ad0ba7e 100644
--- a/src/ErrHndlr.c
+++ b/src/ErrHndlr.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ErrHndlr.c,v 1.5 2001/12/14 19:53:59 dawes Exp $ */
#include "Xlibint.h"
@@ -67,7 +68,6 @@ XErrorHandler XSetErrorHandler(handler)
* the original error handler is restored.
*/
-extern int _XIOError();
#if NeedFunctionPrototypes
XIOErrorHandler XSetIOErrorHandler(XIOErrorHandler handler)
#else
diff --git a/src/EvToWire.c b/src/EvToWire.c
index 361c4e2c..7938a24e 100644
--- a/src/EvToWire.c
+++ b/src/EvToWire.c
@@ -27,6 +27,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/EvToWire.c,v 1.5 2001/12/14 19:53:59 dawes Exp $ */
/*
* XEvToWire.c - Internal support routines for the C subroutine
@@ -41,10 +42,10 @@ from The Open Group.
* reformat a wire event into an XEvent structure of the right type.
*/
Status
-_XEventToWire(dpy, re, event)
-register Display *dpy; /* pointer to display structure */
-register XEvent *re; /* pointer to where event should be reformatted */
-register xEvent *event; /* wire protocol event */
+_XEventToWire(
+register Display *dpy, /* pointer to display structure */
+register XEvent *re, /* pointer to where event should be reformatted */
+register xEvent *event) /* wire protocol event */
{
switch (event->u.u.type = re->type) {
case KeyPress:
diff --git a/src/FSSaver.c b/src/FSSaver.c
index 57cde1aa..e0335481 100644
--- a/src/FSSaver.c
+++ b/src/FSSaver.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FSSaver.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XActivateScreenSaver(dpy)
register Display *dpy;
@@ -35,6 +37,7 @@ XActivateScreenSaver(dpy)
return 1;
}
+int
XResetScreenSaver(dpy)
register Display *dpy;
@@ -43,6 +46,7 @@ XResetScreenSaver(dpy)
return 1;
}
+int
XForceScreenSaver(dpy, mode)
register Display *dpy;
int mode;
diff --git a/src/FSWrap.c b/src/FSWrap.c
index 14adca02..98e02de6 100644
--- a/src/FSWrap.c
+++ b/src/FSWrap.c
@@ -56,6 +56,8 @@ from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FSWrap.c,v 1.6 2001/12/14 19:54:00 dawes Exp $ */
+
#include "Xlibint.h"
#include "Xlcint.h"
#include <ctype.h>
diff --git a/src/FillArc.c b/src/FillArc.c
index 22e41910..c846431c 100644
--- a/src/FillArc.c
+++ b/src/FillArc.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FillArc.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
@@ -31,6 +32,7 @@ in this Software without prior written authorization from The Open Group.
#define size (SIZEOF(xPolyFillArcReq) + FARCSPERBATCH * SIZEOF(xArc))
+int
XFillArc(dpy, d, gc, x, y, width, height, angle1, angle2)
register Display *dpy;
Drawable d;
diff --git a/src/FillArcs.c b/src/FillArcs.c
index 115f25cc..ba975632 100644
--- a/src/FillArcs.c
+++ b/src/FillArcs.c
@@ -24,11 +24,13 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FillArcs.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
#define arc_scale (SIZEOF(xArc) / 4)
+int
XFillArcs(dpy, d, gc, arcs, n_arcs)
register Display *dpy;
Drawable d;
diff --git a/src/FillPoly.c b/src/FillPoly.c
index c8f40c63..d15246bf 100644
--- a/src/FillPoly.c
+++ b/src/FillPoly.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FillPoly.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XFillPolygon(dpy, d, gc, points, n_points, shape, mode)
register Display *dpy;
Drawable d;
diff --git a/src/FillRct.c b/src/FillRct.c
index d2537c7c..cccb6aee 100644
--- a/src/FillRct.c
+++ b/src/FillRct.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FillRct.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
@@ -31,6 +32,7 @@ in this Software without prior written authorization from The Open Group.
#define size (SIZEOF(xPolyFillRectangleReq) + FRCTSPERBATCH * SIZEOF(xRectangle))
+int
XFillRectangle(dpy, d, gc, x, y, width, height)
register Display *dpy;
Drawable d;
diff --git a/src/FillRcts.c b/src/FillRcts.c
index 4e86fec3..c581ab50 100644
--- a/src/FillRcts.c
+++ b/src/FillRcts.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FillRcts.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XFillRectangles(dpy, d, gc, rectangles, n_rects)
register Display *dpy;
Drawable d;
diff --git a/src/FilterEv.c b/src/FilterEv.c
index 2b104839..94a1471e 100644
--- a/src/FilterEv.c
+++ b/src/FilterEv.c
@@ -53,17 +53,13 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FilterEv.c,v 3.5 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
#include "Xlcint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-extern long Const _Xevent_to_mask[];
+extern long const _Xevent_to_mask[];
/*
* Look up if there is a specified filter for the event.
diff --git a/src/Flush.c b/src/Flush.c
index fd6b3935..a0830b0e 100644
--- a/src/Flush.c
+++ b/src/Flush.c
@@ -24,12 +24,14 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Flush.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
/* Flush all buffered output requests. */
/* NOTE: NOT necessary when calling any of the Xlib routines. */
+int
XFlush (dpy)
register Display *dpy;
{
diff --git a/src/Font.c b/src/Font.c
index 2b1eae84..e572450f 100644
--- a/src/Font.c
+++ b/src/Font.c
@@ -2,6 +2,7 @@
/*
Copyright 1986, 1998 The Open Group
+Copyright (c) 2000 The XFree86 Project, Inc.
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
@@ -15,20 +16,84 @@ all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+X CONSORTIUM OR THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
+Except as contained in this notice, the name of the X Consortium or of the
+XFree86 Project shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the X Consortium and the XFree86 Project.
*/
+/* $XFree86: xc/lib/X11/Font.c,v 1.16 2002/12/14 01:55:57 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
-static XFontStruct *_XQueryFont();
+#if defined(XF86BIGFONT) && !defined(MUSTCOPY)
+#define USE_XF86BIGFONT
+#endif
+#ifdef USE_XF86BIGFONT
+#include <sys/types.h>
+#ifdef HAS_SHM
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <X11/extensions/xf86bigfstr.h>
+#endif
+
+#include "Xlcint.h"
+#include "XlcPubI.h"
+
+
+static XFontStruct *_XQueryFont(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ Font /* fid */,
+ unsigned long /* seq */
+#endif
+);
+
+#ifdef USE_XF86BIGFONT
+
+/* Private data for this extension. */
+typedef struct {
+ XExtCodes *codes;
+ CARD32 serverSignature;
+ CARD32 serverCapabilities;
+} XF86BigfontCodes;
+
+/* Additional bit masks that can be set in serverCapabilities */
+#define CAP_VerifiedLocal 256
+
+static XF86BigfontCodes *_XF86BigfontCodes(
+#if NeedFunctionPrototypes
+ Display* /* dpy */
+#endif
+);
+
+static XFontStruct *_XF86BigfontQueryFont(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ XF86BigfontCodes* /* extcodes */,
+ Font /* fid */,
+ unsigned long /* seq */
+#endif
+);
+
+void _XF86BigfontFreeFontMetrics(
+#if NeedFunctionPrototypes
+ XFontStruct* /* fs */
+#endif
+);
+
+#endif /* USE_XF86BIGFONT */
+
#if NeedFunctionPrototypes
XFontStruct *XLoadQueryFont(
@@ -45,7 +110,12 @@ XFontStruct *XLoadQueryFont(dpy, name)
Font fid;
xOpenFontReq *req;
unsigned long seq;
+#ifdef USE_XF86BIGFONT
+ XF86BigfontCodes *extcodes = _XF86BigfontCodes(dpy);
+#endif
+ if (_XF86LoadQueryLocaleFont(dpy, name, &font_result, (Font *)0))
+ return font_result;
LockDisplay(dpy);
GetReq(OpenFont, req);
seq = dpy->request;
@@ -53,12 +123,44 @@ XFontStruct *XLoadQueryFont(dpy, name)
req->fid = fid = XAllocID(dpy);
req->length += (nbytes+3)>>2;
Data (dpy, name, nbytes);
- font_result = _XQueryFont(dpy, fid, seq);
+ font_result = NULL;
+#ifdef USE_XF86BIGFONT
+ if (extcodes) {
+ font_result = _XF86BigfontQueryFont(dpy, extcodes, fid, seq);
+ seq = 0;
+ }
+#endif
+ if (!font_result)
+ font_result = _XQueryFont(dpy, fid, seq);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return font_result;
+}
+
+XFontStruct *XQueryFont (dpy, fid)
+ register Display *dpy;
+ Font fid;
+{
+ XFontStruct *font_result;
+#ifdef USE_XF86BIGFONT
+ XF86BigfontCodes *extcodes = _XF86BigfontCodes(dpy);
+#endif
+
+ LockDisplay(dpy);
+ font_result = NULL;
+#ifdef USE_XF86BIGFONT
+ if (extcodes) {
+ font_result = _XF86BigfontQueryFont(dpy, extcodes, fid, 0L);
+ }
+#endif
+ if (!font_result)
+ font_result = _XQueryFont(dpy, fid, 0L);
UnlockDisplay(dpy);
SyncHandle();
return font_result;
}
+int
XFreeFont(dpy, fs)
register Display *dpy;
XFontStruct *fs;
@@ -73,15 +175,21 @@ XFreeFont(dpy, fs)
GetResReq (CloseFont, fs->fid, req);
UnlockDisplay(dpy);
SyncHandle();
+ if (fs->per_char) {
+#ifdef USE_XF86BIGFONT
+ _XF86BigfontFreeFontMetrics(fs);
+#else
+ Xfree ((char *) fs->per_char);
+#endif
+ }
_XFreeExtData(fs->ext_data);
- if (fs->per_char)
- Xfree ((char *) fs->per_char);
if (fs->properties)
- Xfree ((char *) fs->properties);
+ Xfree ((char *) fs->properties);
Xfree ((char *) fs);
return 1;
}
+
static XFontStruct *
_XQueryFont (dpy, fid, seq)
register Display *dpy;
@@ -176,7 +284,7 @@ _XQueryFont (dpy, fid, seq)
(nbytes + reply.nCharInfos * SIZEOF(xCharInfo)));
return (XFontStruct *)NULL;
}
- _XRead32 (dpy, (char *)fs->properties, nbytes);
+ _XRead32 (dpy, (long *)fs->properties, nbytes);
}
/*
* If no characters in font, then it is a bad font, but
@@ -223,19 +331,423 @@ _XQueryFont (dpy, fid, seq)
return fs;
}
+#ifdef USE_XF86BIGFONT
-XFontStruct *XQueryFont (dpy, fid)
+/* Magic cookie for finding the right XExtData structure on the display's
+ extension list. */
+static int XF86BigfontNumber = 1040697125;
+
+static int
+_XF86BigfontFreeCodes (extension)
+ XExtData *extension;
+{
+ /* Don't Xfree(extension->private_data) because it is on the same malloc
+ chunk as extension. */
+ /* Don't Xfree(extension->private_data->codes) because this is shared with
+ the display's ext_procs list. */
+ return 0;
+}
+
+static XF86BigfontCodes *
+_XF86BigfontCodes (dpy)
register Display *dpy;
+{
+ XEDataObject dpy_union;
+ XExtData *pData;
+ XF86BigfontCodes *pCodes;
+ char *envval;
+
+ dpy_union.display = dpy;
+
+ /* If the server is known to support the XF86Bigfont extension,
+ * return the extension codes. If the server is known to not support
+ * the extension, don't bother checking again.
+ */
+ pData = XFindOnExtensionList(XEHeadOfExtensionList(dpy_union),
+ XF86BigfontNumber);
+ if (pData)
+ return (XF86BigfontCodes *) pData->private_data;
+
+ pData = (XExtData *) Xmalloc(sizeof(XExtData) + sizeof(XF86BigfontCodes));
+ if (!pData) {
+ /* Out of luck. */
+ return (XF86BigfontCodes *) NULL;
+ }
+
+ /* See if the server supports the XF86Bigfont extension. */
+ envval = getenv("XF86BIGFONT_DISABLE"); /* Let the user disable it. */
+ if (envval != NULL && envval[0] != '\0')
+ pCodes = NULL;
+ else {
+ XExtCodes *codes = XInitExtension(dpy, XF86BIGFONTNAME);
+ if (codes == NULL)
+ pCodes = NULL;
+ else {
+ pCodes = (XF86BigfontCodes *) &pData[1];
+ pCodes->codes = codes;
+ }
+ }
+ pData->number = XF86BigfontNumber;
+ pData->private_data = (XPointer) pCodes;
+ pData->free_private = _XF86BigfontFreeCodes;
+ XAddToExtensionList(XEHeadOfExtensionList(dpy_union), pData);
+ if (pCodes) {
+ int result;
+
+ /* See if the server supports the XF86BigfontQueryFont request. */
+ xXF86BigfontQueryVersionReply reply;
+ register xXF86BigfontQueryVersionReq *req;
+
+ LockDisplay(dpy);
+
+ GetReq(XF86BigfontQueryVersion, req);
+ req->reqType = pCodes->codes->major_opcode;
+ req->xf86bigfontReqType = X_XF86BigfontQueryVersion;
+
+ result = _XReply (dpy, (xReply *) &reply,
+ (SIZEOF(xXF86BigfontQueryVersionReply) - SIZEOF(xReply)) >> 2,
+ xFalse);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ if(!result)
+ goto ignore_extension;
+
+ /* No need to provide backward compatibility with version 1.0. It
+ was never widely distributed. */
+ if (!(reply.majorVersion > 1
+ || (reply.majorVersion == 1 && reply.minorVersion >= 1)))
+ goto ignore_extension;
+
+ pCodes->serverSignature = reply.signature;
+ pCodes->serverCapabilities = reply.capabilities;
+ }
+ return pCodes;
+
+ ignore_extension:
+ /* No need to Xfree(pCodes) or Xfree(pCodes->codes), see
+ _XF86BigfontFreeCodes comment. */
+ pCodes = (XF86BigfontCodes *) NULL;
+ pData->private_data = (XPointer) pCodes;
+ return pCodes;
+}
+
+static int
+_XF86BigfontFreeNop (extension)
+ XExtData *extension;
+{
+ return 0;
+}
+
+static XFontStruct *
+_XF86BigfontQueryFont (dpy, extcodes, fid, seq)
+ register Display *dpy;
+ XF86BigfontCodes *extcodes;
Font fid;
+ unsigned long seq;
{
- XFontStruct *font_result;
+ register XFontStruct *fs;
+ register long nbytes;
+ xXF86BigfontQueryFontReply reply;
+ register xXF86BigfontQueryFontReq *req;
+ register _XExtension *ext;
+ _XAsyncHandler async1;
+ _XAsyncErrorState async1_state;
+ _XAsyncHandler async2;
+ _XAsyncErrorState async2_state;
- LockDisplay(dpy);
- font_result = _XQueryFont(dpy, fid, 0L);
- UnlockDisplay(dpy);
- SyncHandle();
- return font_result;
+ if (seq) {
+ async1_state.min_sequence_number = seq;
+ async1_state.max_sequence_number = seq;
+ async1_state.error_code = BadName;
+ async1_state.major_opcode = X_OpenFont;
+ async1_state.minor_opcode = 0;
+ async1_state.error_count = 0;
+ async1.next = dpy->async_handlers;
+ async1.handler = _XAsyncErrorHandler;
+ async1.data = (XPointer)&async1_state;
+ dpy->async_handlers = &async1;
+ }
+
+ GetReq(XF86BigfontQueryFont, req);
+ req->reqType = extcodes->codes->major_opcode;
+ req->xf86bigfontReqType = X_XF86BigfontQueryFont;
+ req->id = fid;
+ req->flags = (extcodes->serverCapabilities & XF86Bigfont_CAP_LocalShm
+ ? XF86Bigfont_FLAGS_Shm : 0);
+
+ /* The function _XQueryFont benefits from a "magic" error handler for
+ BadFont coming from a X_QueryFont request. (See function _XReply.)
+ We have to establish an error handler ourselves. */
+ async2_state.min_sequence_number = dpy->request;
+ async2_state.max_sequence_number = dpy->request;
+ async2_state.error_code = BadFont;
+ async2_state.major_opcode = extcodes->codes->major_opcode;
+ async2_state.minor_opcode = X_XF86BigfontQueryFont;
+ async2_state.error_count = 0;
+ async2.next = dpy->async_handlers;
+ async2.handler = _XAsyncErrorHandler;
+ async2.data = (XPointer)&async2_state;
+ dpy->async_handlers = &async2;
+
+ if (!_XReply (dpy, (xReply *) &reply,
+ ((SIZEOF(xXF86BigfontQueryFontReply) - SIZEOF(xReply)) >> 2), xFalse)) {
+ DeqAsyncHandler(dpy, &async2);
+ if (seq)
+ DeqAsyncHandler(dpy, &async1);
+ return (XFontStruct *)NULL;
+ }
+ DeqAsyncHandler(dpy, &async2);
+ if (seq)
+ DeqAsyncHandler(dpy, &async1);
+ if (! (fs = (XFontStruct *) Xmalloc (sizeof (XFontStruct)))) {
+ _XEatData(dpy,
+ reply.nFontProps * SIZEOF(xFontProp)
+ + (reply.nCharInfos > 0 && reply.shmid == (CARD32)(-1)
+ ? reply.nUniqCharInfos * SIZEOF(xCharInfo)
+ + (reply.nCharInfos+1)/2 * 2 * sizeof(CARD16)
+ : 0));
+ return (XFontStruct *)NULL;
+ }
+ fs->ext_data = NULL;
+ fs->fid = fid;
+ fs->direction = reply.drawDirection;
+ fs->min_char_or_byte2 = reply.minCharOrByte2;
+ fs->max_char_or_byte2 = reply.maxCharOrByte2;
+ fs->min_byte1 = reply.minByte1;
+ fs->max_byte1 = reply.maxByte1;
+ fs->default_char = reply.defaultChar;
+ fs->all_chars_exist = reply.allCharsExist;
+ fs->ascent = cvtINT16toInt (reply.fontAscent);
+ fs->descent = cvtINT16toInt (reply.fontDescent);
+
+ /* XXX the next two statements won't work if short isn't 16 bits */
+ fs->min_bounds = * (XCharStruct *) &reply.minBounds;
+ fs->max_bounds = * (XCharStruct *) &reply.maxBounds;
+
+ fs->n_properties = reply.nFontProps;
+ /*
+ * if no properties defined for the font, then it is bad
+ * font, but shouldn't try to read nothing.
+ */
+ fs->properties = NULL;
+ if (fs->n_properties > 0) {
+ nbytes = reply.nFontProps * sizeof(XFontProp);
+ fs->properties = (XFontProp *) Xmalloc ((unsigned) nbytes);
+ nbytes = reply.nFontProps * SIZEOF(xFontProp);
+ if (! fs->properties) {
+ Xfree((char *) fs);
+ _XEatData(dpy,
+ nbytes
+ + (reply.nCharInfos > 0 && reply.shmid == (CARD32)(-1)
+ ? reply.nUniqCharInfos * SIZEOF(xCharInfo)
+ + (reply.nCharInfos+1)/2 * 2 * sizeof(CARD16)
+ : 0));
+ return (XFontStruct *)NULL;
+ }
+ _XRead32 (dpy, (long *)fs->properties, nbytes);
+ }
+
+ fs->per_char = NULL;
+ if (reply.nCharInfos > 0) {
+ /* fprintf(stderr, "received font metrics, nCharInfos = %d, nUniqCharInfos = %d, shmid = %d\n", reply.nCharInfos, reply.nUniqCharInfos, reply.shmid); */
+ if (reply.shmid == (CARD32)(-1)) {
+ xCharInfo* pUniqCI;
+ CARD16* pIndex2UniqIndex;
+ int i;
+
+ nbytes = reply.nUniqCharInfos * SIZEOF(xCharInfo)
+ + (reply.nCharInfos+1)/2 * 2 * sizeof(CARD16);
+ pUniqCI = (xCharInfo *) Xmalloc (nbytes);
+ if (!pUniqCI) {
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ _XEatData(dpy, nbytes);
+ return (XFontStruct *)NULL;
+ }
+ if (! (fs->per_char = (XCharStruct *) Xmalloc (reply.nCharInfos * sizeof(XCharStruct)))) {
+ Xfree((char *) pUniqCI);
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ _XEatData(dpy, nbytes);
+ return (XFontStruct *)NULL;
+ }
+ _XRead16 (dpy, (char *) pUniqCI, nbytes);
+ pIndex2UniqIndex = (CARD16*) (pUniqCI + reply.nUniqCharInfos);
+ for (i = 0; i < reply.nCharInfos; i++) {
+ if (pIndex2UniqIndex[i] >= reply.nUniqCharInfos) {
+ fprintf(stderr, "_XF86BigfontQueryFont: server returned wrong data\n");
+ Xfree((char *) pUniqCI);
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ return (XFontStruct *)NULL;
+ }
+ /* XXX the next statement won't work if short isn't 16 bits */
+ fs->per_char[i] = * (XCharStruct *) &pUniqCI[pIndex2UniqIndex[i]];
+ }
+ Xfree((char *) pUniqCI);
+ } else {
+#ifdef HAS_SHM
+ XExtData *pData;
+ XEDataObject fs_union;
+ char *addr;
+
+ pData = (XExtData *) Xmalloc(sizeof(XExtData));
+ if (!pData) {
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ return (XFontStruct *)NULL;
+ }
+
+ /* In some cases (e.g. an ssh daemon forwarding an X session to
+ a remote machine) it is possible that the X server thinks we
+ are running on the same machine (because getpeername() and
+ LocalClient() cannot know about the forwarding) but we are
+ not really local. Therefore, when we attach the first shared
+ memory segment, we verify that we are on the same machine as
+ the X server by checking that 1. shmat() succeeds, 2. the
+ segment has a sufficient size, 3. it contains the X server's
+ signature. Then we set the CAP_VerifiedLocal bit to indicate
+ the verification was successful. */
+
+ if ((addr = shmat(reply.shmid, 0, SHM_RDONLY)) == (char *)-1) {
+ if (extcodes->serverCapabilities & CAP_VerifiedLocal)
+ fprintf(stderr, "_XF86BigfontQueryFont: could not attach shm segment\n");
+ Xfree((char *) pData);
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ /* Stop requesting shared memory transport from now on. */
+ extcodes->serverCapabilities &= ~ XF86Bigfont_CAP_LocalShm;
+ return (XFontStruct *)NULL;
+ }
+
+ if (!(extcodes->serverCapabilities & CAP_VerifiedLocal)) {
+ struct shmid_ds buf;
+ if (!(shmctl(reply.shmid, IPC_STAT, &buf) >= 0
+ && buf.shm_segsz >= reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct) + sizeof(CARD32)
+ && *(CARD32 *)(addr + reply.shmsegoffset + reply.nCharInfos * sizeof(XCharStruct)) == extcodes->serverSignature)) {
+ shmdt(addr);
+ Xfree((char *) pData);
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ /* Stop requesting shared memory transport from now on. */
+ extcodes->serverCapabilities &= ~ XF86Bigfont_CAP_LocalShm;
+ return (XFontStruct *)NULL;
+ }
+ extcodes->serverCapabilities |= CAP_VerifiedLocal;
+ }
+
+ pData->number = XF86BigfontNumber;
+ pData->private_data = (XPointer) addr;
+ pData->free_private = _XF86BigfontFreeNop;
+ fs_union.font = fs;
+ XAddToExtensionList(XEHeadOfExtensionList(fs_union), pData);
+
+ fs->per_char = (XCharStruct *) (addr + reply.shmsegoffset);
+#else
+ fprintf(stderr, "_XF86BigfontQueryFont: try recompiling libX11 with HasShm, Xserver has shm support\n");
+ if (fs->properties) Xfree((char *) fs->properties);
+ Xfree((char *) fs);
+ /* Stop requesting shared memory transport from now on. */
+ extcodes->serverCapabilities &= ~ XF86Bigfont_CAP_LocalShm;
+ return (XFontStruct *)NULL;
+#endif
+ }
+ }
+
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->create_Font) (*ext->create_Font)(dpy, fs, &ext->codes);
+ return fs;
}
-
-
+void
+_XF86BigfontFreeFontMetrics (fs)
+ XFontStruct *fs;
+{
+#ifdef HAS_SHM
+ XExtData *pData;
+ XEDataObject fs_union;
+
+ fs_union.font = fs;
+ if ((pData = XFindOnExtensionList(XEHeadOfExtensionList(fs_union),
+ XF86BigfontNumber)))
+ shmdt ((char *) pData->private_data);
+ else
+ Xfree ((char *) fs->per_char);
+#else
+ Xfree ((char *) fs->per_char);
+#endif
+}
+
+#endif /* USE_XF86BIGFONT */
+
+#if NeedFunctionPrototypes
+int _XF86LoadQueryLocaleFont(
+ Display *dpy,
+ _Xconst char *name,
+ XFontStruct **xfp,
+ Font *fidp)
+#else
+int _XF86LoadQueryLocaleFont(dpy, name)
+ Display *dpy;
+ char *name;
+ XFontStruct **xfp;
+ Font *fidp;
+#endif
+{
+ int l;
+ char *charset, *p;
+ char buf[256];
+ XFontStruct *fs;
+ XLCd lcd;
+
+ if (!name)
+ return 0;
+ l = strlen(name);
+ if (l < 2 || name[l - 1] != '*' || name[l - 2] != '-')
+ return 0;
+ charset = 0;
+ /* next three lines stolen from _XkbGetCharset() */
+ lcd = _XlcCurrentLC();
+ if ((lcd = _XlcCurrentLC()) != 0)
+ charset = XLC_PUBLIC(lcd, encoding_name);
+ if (!charset || (p = strrchr(charset, '-')) == 0 || p == charset || p[1] == 0 || (p[1] == '*' && p[2] == 0)) {
+ /* prefer latin1 if no encoding found */
+ charset = "ISO8859-1";
+ p = charset + 7;
+ }
+ if (l - 2 - (p - charset) < 0)
+ return 0;
+ if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset))
+ return 0;
+ if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1)
+ return 0;
+ strcpy(buf, name);
+ strcpy(buf + l - 1, p + 1);
+ fs = XLoadQueryFont(dpy, buf);
+ if (!fs)
+ return 0;
+ if (xfp) {
+ *xfp = fs;
+ if (fidp)
+ *fidp = fs->fid;
+ } else if (fidp) {
+ if (fs->per_char) {
+#ifdef USE_XF86BIGFONT
+ _XF86BigfontFreeFontMetrics(fs);
+#else
+ Xfree ((char *) fs->per_char);
+#endif
+ }
+ _XFreeExtData(fs->ext_data);
+ if (fs->properties)
+ Xfree ((char *) fs->properties);
+ *fidp = fs->fid;
+ Xfree ((char *) fs);
+ } else {
+ XFreeFont(dpy, fs);
+ }
+ return 1;
+}
diff --git a/src/FontInfo.c b/src/FontInfo.c
index 2dd4e793..bba8051f 100644
--- a/src/FontInfo.c
+++ b/src/FontInfo.c
@@ -24,10 +24,22 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FontInfo.c,v 1.6 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+#if defined(XF86BIGFONT) && !defined(MUSTCOPY)
+#define USE_XF86BIGFONT
+#endif
+#ifdef USE_XF86BIGFONT
+extern void _XF86BigfontFreeFontMetrics(
+#if NeedFunctionPrototypes
+ XFontStruct* /* fs */
+#endif
+);
+#endif
+
#if NeedFunctionPrototypes
char **XListFontsWithInfo(
register Display *dpy,
@@ -163,7 +175,7 @@ XFontStruct **info; /* RETURN */
if (! (fs->properties = (XFontProp *) Xmalloc((unsigned) nbytes)))
goto badmem;
nbytes = reply.nFontProps * SIZEOF(xFontProp);
- _XRead32 (dpy, (char *)fs->properties, nbytes);
+ _XRead32 (dpy, (long *)fs->properties, nbytes);
} else
fs->properties = NULL;
@@ -174,7 +186,7 @@ XFontStruct **info; /* RETURN */
flist[i] = (char *) Xmalloc ((unsigned int) j);
if (! flist[i]) {
if (finfo[i].properties) Xfree((char *) finfo[i].properties);
- nbytes = reply.nameLength + 3 & ~3;
+ nbytes = (reply.nameLength + 3) & ~3;
_XEatData(dpy, (unsigned long) nbytes);
goto badmem;
}
@@ -221,7 +233,7 @@ XFontStruct **info; /* RETURN */
return (char **) NULL;
}
-
+int
XFreeFontInfo (names, info, actualCount)
char **names;
XFontStruct *info;
@@ -238,7 +250,11 @@ int actualCount;
if (info) {
for (i = 0; i < actualCount; i++) {
if (info[i].per_char)
+#ifdef USE_XF86BIGFONT
+ _XF86BigfontFreeFontMetrics(&info[i]);
+#else
Xfree ((char *) info[i].per_char);
+#endif
if (info[i].properties)
Xfree ((char *) info[i].properties);
}
diff --git a/src/FontNames.c b/src/FontNames.c
index 8432b2f9..ec4c3092 100644
--- a/src/FontNames.c
+++ b/src/FontNames.c
@@ -25,6 +25,8 @@ in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FontNames.c,v 1.6 2001/12/14 19:54:00 dawes Exp $ */
+
#define NEED_REPLIES
#include "Xlibint.h"
@@ -102,6 +104,7 @@ int *actualCount; /* RETURN */
return (flist);
}
+int
XFreeFontNames(list)
char **list;
{
diff --git a/src/FreeCmap.c b/src/FreeCmap.c
index 3a2d370c..4b83ba1b 100644
--- a/src/FreeCmap.c
+++ b/src/FreeCmap.c
@@ -24,11 +24,13 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FreeCmap.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
extern void _XcmsDeleteCmapRec();
+int
XFreeColormap(dpy, cmap)
register Display *dpy;
Colormap cmap;
diff --git a/src/FreeCols.c b/src/FreeCols.c
index 03f74b90..f0b57a94 100644
--- a/src/FreeCols.c
+++ b/src/FreeCols.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FreeCols.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XFreeColors(dpy, cmap, pixels, npixels, planes)
register Display *dpy;
Colormap cmap;
diff --git a/src/FreeCurs.c b/src/FreeCurs.c
index 4fe214a9..c4ad9514 100644
--- a/src/FreeCurs.c
+++ b/src/FreeCurs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FreeCurs.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XFreeCursor(dpy, cursor)
register Display *dpy;
Cursor cursor;
diff --git a/src/FreeEData.c b/src/FreeEData.c
index 14344fb8..2fb083ab 100644
--- a/src/FreeEData.c
+++ b/src/FreeEData.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FreeEData.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
_XFreeExtData (extension)
XExtData *extension;
{
diff --git a/src/FreeGC.c b/src/FreeGC.c
index 9912ff6f..ab5b1ac9 100644
--- a/src/FreeGC.c
+++ b/src/FreeGC.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FreeGC.c,v 1.5 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XFreeGC (dpy, gc)
register Display *dpy;
GC gc;
diff --git a/src/FreePix.c b/src/FreePix.c
index d90ae131..b517645e 100644
--- a/src/FreePix.c
+++ b/src/FreePix.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/FreePix.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XFreePixmap(dpy, pixmap)
register Display *dpy;
Pixmap pixmap;
diff --git a/src/GCMisc.c b/src/GCMisc.c
index 3735f692..54d37d99 100644
--- a/src/GCMisc.c
+++ b/src/GCMisc.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GCMisc.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include "Xlibint.h"
+int
XSetArcMode (dpy, gc, arc_mode)
register Display *dpy;
register GC gc;
@@ -42,6 +44,7 @@ int arc_mode;
return 1;
}
+int
XSetFillRule (dpy, gc, fill_rule)
register Display *dpy;
register GC gc;
@@ -57,6 +60,7 @@ int fill_rule;
return 1;
}
+int
XSetFillStyle (dpy, gc, fill_style)
register Display *dpy;
register GC gc;
@@ -72,6 +76,7 @@ int fill_style;
return 1;
}
+int
XSetGraphicsExposures (dpy, gc, graphics_exposures)
register Display *dpy;
register GC gc;
@@ -87,6 +92,7 @@ Bool graphics_exposures;
return 1;
}
+int
XSetSubwindowMode (dpy, gc, subwindow_mode)
register Display *dpy;
register GC gc;
diff --git a/src/GetAtomNm.c b/src/GetAtomNm.c
index 1b11fd7a..418dc6e4 100644
--- a/src/GetAtomNm.c
+++ b/src/GetAtomNm.c
@@ -24,31 +24,16 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetAtomNm.c,v 3.5 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
-
-extern void _XFreeAtomTable();
-
-/* XXX this table def is duplicated in IntAtom.c, keep them consistent! */
-
-#define TABLESIZE 64
-
-typedef struct _Entry {
- unsigned long sig;
- Atom atom;
-} EntryRec, *Entry;
-
-#define EntryName(e) ((char *)(e+1))
-
-typedef struct _XDisplayAtoms {
- Entry table[TABLESIZE];
-} AtomTable;
+#include "Xintatom.h"
static
-char *_XGetAtomName(dpy, atom)
- Display *dpy;
- Atom atom;
+char *_XGetAtomName(
+ Display *dpy,
+ Atom atom)
{
xResourceReq *req;
char *name;
@@ -112,12 +97,12 @@ typedef struct {
} _XGetAtomNameState;
static
-Bool _XGetAtomNameHandler(dpy, rep, buf, len, data)
- register Display *dpy;
- register xReply *rep;
- char *buf;
- int len;
- XPointer data;
+Bool _XGetAtomNameHandler(
+ register Display *dpy,
+ register xReply *rep,
+ char *buf,
+ int len,
+ XPointer data)
{
register _XGetAtomNameState *state;
xGetAtomNameReply replbuf;
diff --git a/src/GetColor.c b/src/GetColor.c
index b469b5d4..090f241c 100644
--- a/src/GetColor.c
+++ b/src/GetColor.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetColor.c,v 1.5 2002/12/04 23:18:32 paulo Exp $ */
#define NEED_REPLIES
#include <stdio.h>
@@ -32,6 +33,16 @@ in this Software without prior written authorization from The Open Group.
extern void _XcmsRGB_to_XColor();
+/* cmsColNm.c */
+extern Status _XcmsResolveColorString(
+#if NeedFunctionPrototypes
+ XcmsCCC ccc,
+ _Xconst char **color_string,
+ XcmsColor *pColor_exact_return,
+ XcmsColorFormat result_format
+#endif
+);
+
#if NeedFunctionPrototypes
Status XAllocNamedColor(
register Display *dpy,
@@ -60,20 +71,27 @@ XColor *exact_def; /* RETURN */
/*
* Let's Attempt to use Xcms and i18n approach to Parse Color
*/
- /* copy string to allow overwrite by _XcmsResolveColorString() */
if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- if (_XcmsResolveColorString(ccc, &colorname, &cmsColor_exact,
- XcmsRGBFormat) >= XcmsSuccess) {
+ const char *tmpName = colorname;
+
+ switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact,
+ XcmsRGBFormat)) {
+ case XcmsSuccess:
+ case XcmsSuccessWithCompression:
_XcmsRGB_to_XColor(&cmsColor_exact, exact_def, 1);
memcpy((char *)hard_def, (char *)exact_def, sizeof(XColor));
ret = XAllocColor(dpy, cmap, hard_def);
exact_def->pixel = hard_def->pixel;
return(ret);
+ case XcmsFailure:
+ case _XCMS_NEWNAME:
+ /*
+ * if the result was _XCMS_NEWNAME tmpName points to
+ * a string in cmsColNm.c:pairs table, for example,
+ * gray70 would become tekhvc:0.0/70.0/0.0
+ */
+ break;
}
- /*
- * Otherwise we failed; or colorname was changed with yet another
- * name. Thus pass name to the X Server.
- */
}
/*
diff --git a/src/GetDflt.c b/src/GetDflt.c
index 6e05abd4..317ee4a4 100644
--- a/src/GetDflt.c
+++ b/src/GetDflt.c
@@ -46,6 +46,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/GetDflt.c,v 3.21 2002/05/31 18:45:41 dawes Exp $ */
#include "Xlibint.h"
#include <X11/Xos.h>
@@ -86,9 +87,6 @@ SOFTWARE.
#include <stdio.h>
#include <ctype.h>
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
/*ARGSUSED*/
static char *GetHomeDir (dest, len)
@@ -114,7 +112,9 @@ static char *GetHomeDir (dest, len)
else
*dest = '\0';
#else
+#ifdef X_NEEDS_PWPARAMS
_Xgetpwparams pwparams;
+#endif
struct passwd *pw;
register char *ptr;
@@ -122,7 +122,7 @@ static char *GetHomeDir (dest, len)
return NULL;
if ((ptr = getenv("HOME"))) {
- (void) strncpy(dest, ptr, len);
+ (void) strncpy(dest, ptr, len-1);
dest[len-1] = '\0';
} else {
if ((ptr = getenv("USER")))
@@ -130,7 +130,7 @@ static char *GetHomeDir (dest, len)
else
pw = _XGetpwuid(getuid(),pwparams);
if (pw != NULL) {
- (void) strncpy(dest, pw->pw_dir, len);
+ (void) strncpy(dest, pw->pw_dir, len-1);
dest[len-1] = '\0';
} else
*dest = '\0';
@@ -210,6 +210,10 @@ char *XGetDefault(dpy, prog, name)
#ifdef WIN32
char *progname2;
#endif
+#ifdef __UNIXOS2__
+ char *progname2;
+ char *dotpos;
+#endif
/*
* strip path off of program name (XXX - this is OS specific)
@@ -220,6 +224,14 @@ char *XGetDefault(dpy, prog, name)
if (progname2 && (!progname || progname < progname2))
progname = progname2;
#endif
+#ifdef __UNIXOS2__ /* Very similar to WIN32 */
+ progname2 = strrchr (prog, '\\');
+ if (progname2 && (!progname || progname < progname2))
+ progname = progname2;
+ dotpos = strrchr (prog, '.');
+ if (dotpos && (dotpos>progname2)) *dotpos='\0';
+#endif /* We take out the .exe suffix */
+
if (progname)
progname++;
else
diff --git a/src/GetFPath.c b/src/GetFPath.c
index 69dd809c..03d4aaad 100644
--- a/src/GetFPath.c
+++ b/src/GetFPath.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetFPath.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -79,6 +80,7 @@ int *npaths; /* RETURN */
return (flist);
}
+int
XFreeFontPath (list)
char **list;
{
diff --git a/src/GetHints.c b/src/GetHints.c
index 7958fd1f..6f835e92 100644
--- a/src/GetHints.c
+++ b/src/GetHints.c
@@ -46,6 +46,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/GetHints.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xos.h>
diff --git a/src/GetIFocus.c b/src/GetIFocus.c
index 7e2ca86c..9e17b853 100644
--- a/src/GetIFocus.c
+++ b/src/GetIFocus.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetIFocus.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
XGetInputFocus(dpy, focus, revert_to)
register Display *dpy;
Window *focus;
diff --git a/src/GetImage.c b/src/GetImage.c
index ab665d81..9ffef9ed 100644
--- a/src/GetImage.c
+++ b/src/GetImage.c
@@ -24,11 +24,16 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetImage.c,v 1.4 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
#include <X11/Xutil.h> /* for XDestroyImage */
+/* ImUtil.c */
+extern int _XGetScanlinePad();
+extern int _XSetImage();
+
#define ROUNDUP(nbytes, pad) (((((nbytes) - 1) + (pad)) / (pad)) * (pad))
static unsigned int Ones(mask) /* HACKMEM 169 */
diff --git a/src/GetKCnt.c b/src/GetKCnt.c
index d8fa69c9..8d109aec 100644
--- a/src/GetKCnt.c
+++ b/src/GetKCnt.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetKCnt.c,v 1.6 2001/12/14 19:54:00 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
XGetKeyboardControl (dpy, state)
register Display *dpy;
register XKeyboardState *state;
diff --git a/src/GetPCnt.c b/src/GetPCnt.c
index 54b84270..19d6b76d 100644
--- a/src/GetPCnt.c
+++ b/src/GetPCnt.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetPCnt.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
XGetPointerControl(dpy, accel_numer, accel_denom, threshold)
register Display *dpy;
/* the following are return only vars */
diff --git a/src/GetPntMap.c b/src/GetPntMap.c
index 9af3a57c..1f993145 100644
--- a/src/GetPntMap.c
+++ b/src/GetPntMap.c
@@ -25,6 +25,8 @@ in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetPntMap.c,v 1.6 2001/12/14 19:54:01 dawes Exp $ */
+
#define NEED_REPLIES
#include "Xlibint.h"
@@ -54,6 +56,7 @@ int XGetPointerMapping (dpy, map, nmaps)
nbytes = (long)rep.length << 2;
+ /* Don't count on the server returning a valid value */
if (nbytes > sizeof mapping) {
remainder = nbytes - sizeof mapping;
nbytes = sizeof mapping;
@@ -117,7 +120,7 @@ KeySym *XGetKeyboardMapping (dpy, first_keycode, count, keysyms_per_keycode)
SyncHandle();
return (KeySym *) NULL;
}
- _XRead32 (dpy, (char *) mapping, nbytes);
+ _XRead32 (dpy, (long *) mapping, nbytes);
}
*keysyms_per_keycode = rep.keySymsPerKeyCode;
UnlockDisplay(dpy);
diff --git a/src/GetProp.c b/src/GetProp.c
index ac8ef1c5..23214f9c 100644
--- a/src/GetProp.c
+++ b/src/GetProp.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetProp.c,v 1.6 2001/12/14 19:54:01 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -75,21 +76,24 @@ XGetWindowProperty(dpy, w, property, offset, length, delete,
*/
case 8:
nbytes = netbytes = reply.nItems;
- if ((*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
+ if (nbytes + 1 > 0 &&
+ (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
_XReadPad (dpy, (char *) *prop, netbytes);
break;
case 16:
nbytes = reply.nItems * sizeof (short);
netbytes = reply.nItems << 1;
- if ((*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
+ if (nbytes + 1 > 0 &&
+ (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
_XRead16Pad (dpy, (short *) *prop, netbytes);
break;
case 32:
nbytes = reply.nItems * sizeof (long);
netbytes = reply.nItems << 2;
- if ((*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
+ if (nbytes + 1 > 0 &&
+ (*prop = (unsigned char *) Xmalloc ((unsigned)nbytes + 1)))
_XRead32 (dpy, (long *) *prop, netbytes);
break;
@@ -107,7 +111,7 @@ XGetWindowProperty(dpy, w, property, offset, length, delete,
error.errorCode = BadImplementation;
_XError(dpy, &error);
}
- netbytes = 0L;
+ nbytes = netbytes = 0L;
break;
}
if (! *prop) {
diff --git a/src/GetSSaver.c b/src/GetSSaver.c
index 60a7ef08..d7f05ccf 100644
--- a/src/GetSSaver.c
+++ b/src/GetSSaver.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GetSSaver.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
XGetScreenSaver(dpy, timeout, interval, prefer_blanking, allow_exp)
register Display *dpy;
/* the following are return only vars */
diff --git a/src/GrButton.c b/src/GrButton.c
index f0a8ebfb..87e6a2e8 100644
--- a/src/GrButton.c
+++ b/src/GrButton.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GrButton.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
#include "Xlibint.h"
+int
XGrabButton(dpy, button, modifiers, grab_window, owner_events, event_mask,
pointer_mode, keyboard_mode, confine_to, curs)
register Display *dpy;
diff --git a/src/GrKey.c b/src/GrKey.c
index 4f339b75..53e1a962 100644
--- a/src/GrKey.c
+++ b/src/GrKey.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GrKey.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
#include "Xlibint.h"
+int
XGrabKey(dpy, key, modifiers, grab_window, owner_events,
pointer_mode, keyboard_mode)
register Display *dpy;
diff --git a/src/GrServer.c b/src/GrServer.c
index 9dfc04ac..c1e2f2d9 100644
--- a/src/GrServer.c
+++ b/src/GrServer.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/GrServer.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
#include "Xlibint.h"
+int
XGrabServer (dpy)
register Display *dpy;
{
diff --git a/src/Host.c b/src/Host.c
index 863ff8ef..7d0c3a7c 100644
--- a/src/Host.c
+++ b/src/Host.c
@@ -24,11 +24,13 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Host.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
/* this might be rightly reguarded an os dependent file */
#include "Xlibint.h"
+int
XAddHost (dpy, host)
register Display *dpy;
XHostAddress *host;
@@ -47,6 +49,7 @@ XAddHost (dpy, host)
return 1;
}
+int
XRemoveHost (dpy, host)
register Display *dpy;
XHostAddress *host;
@@ -65,7 +68,7 @@ XRemoveHost (dpy, host)
return 1;
}
-
+int
XAddHosts (dpy, hosts, n)
register Display *dpy;
XHostAddress *hosts;
@@ -78,6 +81,7 @@ XAddHosts (dpy, hosts, n)
return 1;
}
+int
XRemoveHosts (dpy, hosts, n)
register Display *dpy;
XHostAddress *hosts;
diff --git a/src/IfEvent.c b/src/IfEvent.c
index 975d77a1..34b9e390 100644
--- a/src/IfEvent.c
+++ b/src/IfEvent.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/IfEvent.c,v 1.4 2001/12/14 19:54:01 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -33,6 +34,7 @@ in this Software without prior written authorization from The Open Group.
* predicate in the queue.
*/
+int
XIfEvent (dpy, event, predicate, arg)
register Display *dpy;
Bool (*predicate)(
diff --git a/src/ImText.c b/src/ImText.c
index 45f17983..c68f2c2b 100644
--- a/src/ImText.c
+++ b/src/ImText.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ImText.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XDrawImageString(
register Display *dpy,
diff --git a/src/ImText16.c b/src/ImText16.c
index fdc171ad..4d9338a8 100644
--- a/src/ImText16.c
+++ b/src/ImText16.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ImText16.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XDrawImageString16(
register Display *dpy,
diff --git a/src/ImUtil.c b/src/ImUtil.c
index b358e511..6cab3e21 100644
--- a/src/ImUtil.c
+++ b/src/ImUtil.c
@@ -24,16 +24,14 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ImUtil.c,v 3.10 2001/12/14 19:54:02 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xutil.h>
#include <stdio.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
+/* PutImage.c */
+extern int _XReverse_Bytes();
#if NeedFunctionPrototypes
static int _XDestroyImage(XImage *);
@@ -51,14 +49,15 @@ static XImage *_XSubImage(XImage *, int, int, unsigned int, unsigned int);
static int _XAddPixel(XImage *, long);
#endif
-static unsigned char Const _lomask[0x09] = { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff };
-static unsigned char Const _himask[0x09] = { 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00 };
+static unsigned char const _lomask[0x09] = { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff };
+static unsigned char const _himask[0x09] = { 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00 };
/* These two convenience routines return the scanline_pad and bits_per_pixel
associated with a specific depth of ZPixmap format image for a
display. */
- _XGetScanlinePad(dpy, depth)
+int
+_XGetScanlinePad(dpy, depth)
Display *dpy;
int depth;
{
@@ -72,7 +71,8 @@ static unsigned char Const _himask[0x09] = { 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0,
return(dpy->bitmap_pad);
}
- _XGetBitsPerPixel(dpy, depth)
+int
+_XGetBitsPerPixel(dpy, depth)
Display *dpy;
int depth;
{
@@ -241,6 +241,10 @@ static void _putbits (src, dstoffset, numbits, dst)
*
*/
+#if defined(Lynx) && defined(ROUNDUP)
+#undef ROUNDUP
+#endif
+
#define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3))
#define XYNORMALIZE(bp, img) \
@@ -444,7 +448,7 @@ static int _XDestroyImage (ximage)
*
*/
-static unsigned long Const low_bits_table[] = {
+static unsigned long const low_bits_table[] = {
0x00000000, 0x00000001, 0x00000003, 0x00000007,
0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f,
0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff,
@@ -518,7 +522,7 @@ static unsigned long _XGetPixel (ximage, x, y)
}
#ifndef WORD64
-static unsigned long byteorderpixel = MSBFirst << 24;
+static CARD32 const byteorderpixel = MSBFirst << 24;
#endif
static unsigned long _XGetPixel32 (ximage, x, y)
@@ -533,7 +537,7 @@ static unsigned long _XGetPixel32 (ximage, x, y)
addr = &((unsigned char *)ximage->data)
[y * ximage->bytes_per_line + (x << 2)];
#ifndef WORD64
- if (*((char *)&byteorderpixel) == ximage->byte_order)
+ if (*((const char *)&byteorderpixel) == ximage->byte_order)
pixel = *((CARD32 *)addr);
else
#endif
@@ -724,7 +728,7 @@ static int _XPutPixel32 (ximage, x, y, pixel)
addr = &((unsigned char *)ximage->data)
[y * ximage->bytes_per_line + (x << 2)];
#ifndef WORD64
- if (*((char *)&byteorderpixel) == ximage->byte_order)
+ if (*((const char *)&byteorderpixel) == ximage->byte_order)
*((CARD32 *)addr) = pixel;
else
#endif
@@ -957,7 +961,8 @@ int _XSetImage (srcimg, dstimg, x, y)
*
*/
-static _XAddPixel (ximage, value)
+static int
+_XAddPixel (ximage, value)
register XImage *ximage;
register long value;
{
@@ -989,14 +994,14 @@ static _XAddPixel (ximage, value)
#ifndef WORD64
} else if ((ximage->format == ZPixmap) &&
(ximage->bits_per_pixel == 16) &&
- (*((char *)&byteorderpixel) == ximage->byte_order)) {
+ (*((const char *)&byteorderpixel) == ximage->byte_order)) {
register unsigned short *dp = (unsigned short *) ximage->data;
x = (ximage->bytes_per_line >> 1) * ximage->height;
while (--x >= 0)
*dp++ += value;
} else if ((ximage->format == ZPixmap) &&
(ximage->bits_per_pixel == 32) &&
- (*((char *)&byteorderpixel) == ximage->byte_order)) {
+ (*((const char *)&byteorderpixel) == ximage->byte_order)) {
register CARD32 *dp = (CARD32 *) ximage->data;
x = (ximage->bytes_per_line >> 2) * ximage->height;
while (--x >= 0)
diff --git a/src/InitExt.c b/src/InitExt.c
index c24d4490..00b2c526 100644
--- a/src/InitExt.c
+++ b/src/InitExt.c
@@ -26,15 +26,12 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/InitExt.c,v 1.7 2001/12/14 19:54:02 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xos.h>
#include <stdio.h>
-extern Bool _XUnknownWireEvent();
-extern Status _XUnknownNativeEvent();
-extern Bool _XDefaultWireError();
-
/*
* This routine is used to link a extension in so it will be called
* at appropriate times.
@@ -95,9 +92,9 @@ XExtCodes *XAddExtension (dpy)
return (&ext->codes); /* tell him which extension */
}
-static _XExtension *XLookupExtension (dpy, extension)
- register Display *dpy; /* display */
- register int extension; /* extension number */
+static _XExtension *XLookupExtension (
+ register Display *dpy, /* display */
+ register int extension) /* extension number */
{
register _XExtension *ext;
for (ext = dpy->ext_procs; ext; ext = ext->next)
@@ -111,6 +108,7 @@ XExtData **XEHeadOfExtensionList(object)
return *(XExtData ***)&object;
}
+int
XAddToExtensionList(structure, ext_data)
XExtData **structure;
XExtData *ext_data;
@@ -132,14 +130,6 @@ XExtData *XFindOnExtensionList(structure, number)
return ext;
}
-typedef int (*CreateGCType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-#endif
-);
-
/*
* Routines to hang procs on the extension structure.
*/
@@ -149,7 +139,7 @@ CreateGCType XESetCreateGC(dpy, extension, proc)
CreateGCType proc; /* routine to call when GC created */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register CreateGCType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->create_GC;
@@ -158,21 +148,13 @@ CreateGCType XESetCreateGC(dpy, extension, proc)
return (CreateGCType)oldproc;
}
-typedef int (*CopyGCType)(
-#if NeedFunctionPrototypes
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-#endif
-);
-
CopyGCType XESetCopyGC(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
CopyGCType proc; /* routine to call when GC copied */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register CopyGCType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->copy_GC;
@@ -181,21 +163,13 @@ CopyGCType XESetCopyGC(dpy, extension, proc)
return (CopyGCType)oldproc;
}
-typedef int (*FlushGCType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-#endif
-);
-
FlushGCType XESetFlushGC(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
FlushGCType proc; /* routine to call when GC copied */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register FlushGCType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->flush_GC;
@@ -204,21 +178,13 @@ FlushGCType XESetFlushGC(dpy, extension, proc)
return (FlushGCType)oldproc;
}
-typedef int (*FreeGCType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-#endif
-);
-
FreeGCType XESetFreeGC(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
FreeGCType proc; /* routine to call when GC freed */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register FreeGCType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->free_GC;
@@ -227,21 +193,13 @@ FreeGCType XESetFreeGC(dpy, extension, proc)
return (FreeGCType)oldproc;
}
-typedef int (*CreateFontType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- XFontStruct* /* fs */,
- XExtCodes* /* codes */
-#endif
-);
-
CreateFontType XESetCreateFont(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
CreateFontType proc; /* routine to call when font created */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register CreateFontType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->create_Font;
@@ -250,21 +208,13 @@ CreateFontType XESetCreateFont(dpy, extension, proc)
return (CreateFontType)oldproc;
}
-typedef int (*FreeFontType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- XFontStruct* /* fs */,
- XExtCodes* /* codes */
-#endif
-);
-
FreeFontType XESetFreeFont(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
FreeFontType proc; /* routine to call when font freed */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register FreeFontType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->free_Font;
@@ -273,20 +223,13 @@ FreeFontType XESetFreeFont(dpy, extension, proc)
return (FreeFontType)oldproc;
}
-typedef int (*CloseDisplayType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- XExtCodes* /* codes */
-#endif
-);
-
CloseDisplayType XESetCloseDisplay(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
CloseDisplayType proc; /* routine to call when display closed */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register CloseDisplayType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->close_display;
@@ -308,7 +251,7 @@ WireToEventType XESetWireToEvent(dpy, event_number, proc)
WireToEventType proc; /* routine to call when converting event */
int event_number; /* event routine to replace */
{
- register Bool (*oldproc)();
+ register WireToEventType oldproc;
if (proc == NULL) proc = (WireToEventType)_XUnknownWireEvent;
LockDisplay (dpy);
oldproc = dpy->event_vec[event_number];
@@ -330,7 +273,7 @@ EventToWireType XESetEventToWire(dpy, event_number, proc)
EventToWireType proc; /* routine to call when converting event */
int event_number; /* event routine to replace */
{
- register Status (*oldproc)();
+ register EventToWireType oldproc;
if (proc == NULL) proc = (EventToWireType) _XUnknownNativeEvent;
LockDisplay (dpy);
oldproc = dpy->wire_vec[event_number];
@@ -352,12 +295,12 @@ WireToErrorType XESetWireToError(dpy, error_number, proc)
WireToErrorType proc; /* routine to call when converting error */
int error_number; /* error routine to replace */
{
- register Bool (*oldproc)();
+ register WireToErrorType oldproc = NULL;
if (proc == NULL) proc = (WireToErrorType)_XDefaultWireError;
LockDisplay (dpy);
if (!dpy->error_vec) {
int i;
- dpy->error_vec = (Bool (**)())Xmalloc(256 * sizeof(oldproc));
+ dpy->error_vec = Xmalloc(256 * sizeof(oldproc));
for (i = 1; i < 256; i++)
dpy->error_vec[i] = _XDefaultWireError;
}
@@ -369,22 +312,13 @@ WireToErrorType XESetWireToError(dpy, error_number, proc)
return (WireToErrorType)oldproc;
}
-typedef int (*ErrorType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- xError* /* err */,
- XExtCodes* /* codes */,
- int* /* ret_code */
-#endif
-);
-
ErrorType XESetError(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
ErrorType proc; /* routine to call when X error happens */
{
register _XExtension *e; /* for lookup of extension */
- register int (*oldproc)();
+ register ErrorType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->error;
@@ -393,23 +327,13 @@ ErrorType XESetError(dpy, extension, proc)
return (ErrorType)oldproc;
}
-typedef char* (*ErrorStringType) (
-#if NeedFunctionPrototypes
- Display* /* display */,
- int /* code */,
- XExtCodes* /* codes */,
- char* /* buffer */,
- int /* nbytes */
-#endif
-);
-
ErrorStringType XESetErrorString(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
ErrorStringType proc; /* routine to call when I/O error happens */
{
register _XExtension *e; /* for lookup of extension */
- register char *(*oldproc)();
+ register ErrorStringType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->error_string;
@@ -418,21 +342,13 @@ ErrorStringType XESetErrorString(dpy, extension, proc)
return (ErrorStringType)oldproc;
}
-typedef void (*PrintErrorType)(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XErrorEvent* /* ev */,
- void* /* fp */
-#endif
-);
-
PrintErrorType XESetPrintErrorValues(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
PrintErrorType proc; /* routine to call to print */
{
register _XExtension *e; /* for lookup of extension */
- register void (*oldproc)();
+ register PrintErrorType oldproc;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
oldproc = e->error_values;
@@ -441,22 +357,13 @@ PrintErrorType XESetPrintErrorValues(dpy, extension, proc)
return (PrintErrorType)oldproc;
}
-typedef void (*BeforeFlushType)(
-#if NeedFunctionPrototypes
- Display* /* display */,
- XExtCodes* /* codes */,
- char* /* data */,
- long /* len */
-#endif
-);
-
BeforeFlushType XESetBeforeFlush(dpy, extension, proc)
Display *dpy; /* display */
int extension; /* extension number */
BeforeFlushType proc; /* routine to call on flush */
{
register _XExtension *e; /* for lookup of extension */
- register void (*oldproc)();
+ register BeforeFlushType oldproc;
register _XExtension *ext;
if ((e = XLookupExtension (dpy, extension)) == NULL) return (NULL);
LockDisplay(dpy);
diff --git a/src/InsCmap.c b/src/InsCmap.c
index 1e10d953..2e3ee55f 100644
--- a/src/InsCmap.c
+++ b/src/InsCmap.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/InsCmap.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
+int
XInstallColormap(dpy, cmap)
register Display *dpy;
Colormap cmap;
diff --git a/src/IntAtom.c b/src/IntAtom.c
index 467286b0..237b6702 100644
--- a/src/IntAtom.c
+++ b/src/IntAtom.c
@@ -26,26 +26,11 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/IntAtom.c,v 1.6 2001/12/14 19:54:02 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
-
-/* XXX this table def is duplicated in GetAtomNm.c, keep them consistent! */
-
-#define TABLESIZE 64
-
-typedef struct _Entry {
- unsigned long sig;
- Atom atom;
-} EntryRec, *Entry;
-
-#define RESERVED ((Entry) 1)
-
-#define EntryName(e) ((char *)(e+1))
-
-typedef struct _XDisplayAtoms {
- Entry table[TABLESIZE];
-} AtomTable;
+#include "Xintatom.h"
#define HASH(sig) ((sig) & (TABLESIZE-1))
#define REHASHVAL(sig) ((((sig) % (TABLESIZE-3)) + 2) | 1)
@@ -70,20 +55,20 @@ _XFreeAtomTable(dpy)
}
static
-Atom _XInternAtom(dpy, name, onlyIfExists, psig, pidx, pn)
- Display *dpy;
- char *name;
- Bool onlyIfExists;
- unsigned long *psig;
- int *pidx;
- int *pn;
+Atom _XInternAtom(
+ Display *dpy,
+ _Xconst char *name,
+ Bool onlyIfExists,
+ unsigned long *psig,
+ int *pidx,
+ int *pn)
{
register AtomTable *atoms;
register char *s1, c, *s2;
register unsigned long sig;
- register int idx, i;
+ register int idx = 0, i;
Entry e;
- int n, firstidx, rehash;
+ int n, firstidx, rehash = 0;
xInternAtomReq *req;
/* look in the cache first */
@@ -130,7 +115,7 @@ nomatch: if (idx == firstidx)
void
_XUpdateAtomCache(dpy, name, atom, sig, idx, n)
Display *dpy;
- char *name;
+ const char *name;
Atom atom;
unsigned long sig;
int idx;
@@ -177,7 +162,7 @@ _XUpdateAtomCache(dpy, name, atom, sig, idx, n)
#if NeedFunctionPrototypes
Atom XInternAtom (
Display *dpy,
- _Xconst char *name,
+ const char *name,
Bool onlyIfExists)
#else
Atom XInternAtom (dpy, name, onlyIfExists)
@@ -219,15 +204,15 @@ typedef struct {
} _XIntAtomState;
static
-Bool _XIntAtomHandler(dpy, rep, buf, len, data)
- register Display *dpy;
- register xReply *rep;
- char *buf;
- int len;
- XPointer data;
+Bool _XIntAtomHandler(
+ register Display *dpy,
+ register xReply *rep,
+ char *buf,
+ int len,
+ XPointer data)
{
register _XIntAtomState *state;
- register int i, idx;
+ register int i, idx = 0;
xInternAtomReply replbuf;
register xInternAtomReply *repl;
diff --git a/src/KeyBind.c b/src/KeyBind.c
index f56a06a4..e3b40944 100644
--- a/src/KeyBind.c
+++ b/src/KeyBind.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/KeyBind.c,v 1.5 2001/12/14 19:54:02 dawes Exp $ */
/* Beware, here be monsters (still under construction... - JG */
@@ -37,12 +38,16 @@ in this Software without prior written authorization from The Open Group.
#define XK_LATIN4
#define XK_CYRILLIC
#define XK_GREEK
+#define XK_ARMENIAN
#define XK_XKB_KEYS
#include <X11/keysymdef.h>
#include <stdio.h>
+#include "XKBlib.h"
+
#ifdef USE_OWN_COMPOSE
#include "imComp.h"
+
#endif
#ifdef XKB
@@ -51,6 +56,7 @@ in this Software without prior written authorization from The Open Group.
#define XLookupKeysym _XLookupKeysym
#define XRefreshKeyboardMapping _XRefreshKeyboardMapping
#define XLookupString _XLookupString
+/* XKBBind.c */
#else
#define XkbKeysymToModifiers _XKeysymToModifiers
#endif
@@ -59,6 +65,7 @@ in this Software without prior written authorization from The Open Group.
Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)
static void ComputeMaskFromKeytrans();
+int _XKeyInitialize();
struct _XKeytrans {
struct _XKeytrans *next;/* next on list */
@@ -227,6 +234,7 @@ InitModMap(dpy)
return 1;
}
+int
XRefreshKeyboardMapping(event)
register XMappingEvent *event;
{
@@ -388,6 +396,12 @@ XConvertCase(sym, lower, upper)
sym != XK_Greek_finalsmallsigma)
*upper -= (XK_Greek_alpha - XK_Greek_ALPHA);
break;
+ case 0x14: /* Armenian */
+ if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) {
+ *lower = sym | 1;
+ *upper = sym & ~1;
+ }
+ break;
}
}
@@ -623,6 +637,7 @@ _XFreeKeyBindings (dpy)
}
}
+int
#if NeedFunctionPrototypes
XRebindKeysym (
Display *dpy,
diff --git a/src/KeysymStr.c b/src/KeysymStr.c
index 1e94a5d7..5a2faf5c 100644
--- a/src/KeysymStr.c
+++ b/src/KeysymStr.c
@@ -25,16 +25,13 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/KeysymStr.c,v 3.8 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
#include <X11/Xresource.h>
#include <X11/keysymdef.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
+#include <stdio.h> /* sprintf */
typedef unsigned long Signature;
@@ -42,7 +39,7 @@ typedef unsigned long Signature;
#include "ks_tables.h"
extern XrmDatabase _XInitKeysymDB();
-extern Const unsigned char _XkeyTable[];
+extern const unsigned char _XkeyTable[];
typedef struct _GRNData {
@@ -88,7 +85,7 @@ char *XKeysymToString(ks)
register int i, n;
int h;
register int idx;
- Const unsigned char *entry;
+ const unsigned char *entry;
unsigned char val1, val2;
XrmDatabase keysymdb;
@@ -131,7 +128,32 @@ char *XKeysymToString(ks)
data.value = &resval;
(void)XrmEnumerateDatabase(keysymdb, &empty, &empty, XrmEnumAllLevels,
SameValue, (XPointer)&data);
- return data.name;
+ if (data.name)
+ return data.name;
+ }
+ if ((ks & 0xff000000) == 0x01000000){
+ KeySym val = ks & 0xffffff;
+ char *s;
+ int i;
+ if (val & 0xff0000)
+ i = 10;
+ else
+ i = 6;
+ s = Xmalloc(i);
+ if (s == NULL)
+ return s;
+ i--;
+ s[i--] = '\0';
+ for (; i; i--){
+ val1 = val & 0xf;
+ val >>= 4;
+ if (val1 < 10)
+ s[i] = '0'+ val1;
+ else
+ s[i] = 'A'+ val1 - 10;
+ }
+ s[i] = 'U';
+ return s;
}
return ((char *) NULL);
}
diff --git a/src/KillCl.c b/src/KillCl.c
index 750ea825..1e73559e 100644
--- a/src/KillCl.c
+++ b/src/KillCl.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/KillCl.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
+int
XKillClient(dpy, resource)
register Display *dpy;
XID resource;
diff --git a/src/LiICmaps.c b/src/LiICmaps.c
index 93076cc7..a1c6491b 100644
--- a/src/LiICmaps.c
+++ b/src/LiICmaps.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/LiICmaps.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -58,7 +59,7 @@ int *n; /* RETURN */
SyncHandle();
return((Colormap *) NULL);
}
- _XRead32 (dpy, (char *) cmaps, nbytes);
+ _XRead32 (dpy, (long *) cmaps, nbytes);
}
else cmaps = (Colormap *) NULL;
diff --git a/src/LiProps.c b/src/LiProps.c
index ae733d74..98a54b3b 100644
--- a/src/LiProps.c
+++ b/src/LiProps.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/LiProps.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -57,7 +58,7 @@ int *n_props; /* RETURN */
SyncHandle();
return (Atom *) NULL;
}
- _XRead32 (dpy, (char *) properties, nbytes);
+ _XRead32 (dpy, (long *) properties, nbytes);
}
else properties = (Atom *) NULL;
diff --git a/src/ListExt.c b/src/ListExt.c
index 6d626be9..063e2439 100644
--- a/src/ListExt.c
+++ b/src/ListExt.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ListExt.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -85,6 +86,7 @@ int *nextensions; /* RETURN */
return (list);
}
+int
XFreeExtensionList (list)
char **list;
{
diff --git a/src/LoadFont.c b/src/LoadFont.c
index 6dd96ad6..270ba320 100644
--- a/src/LoadFont.c
+++ b/src/LoadFont.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/LoadFont.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
@@ -40,6 +41,10 @@ Font XLoadFont (dpy, name)
register long nbytes;
Font fid;
register xOpenFontReq *req;
+
+ if (_XF86LoadQueryLocaleFont(dpy, name, (XFontStruct **)0, &fid))
+ return fid;
+
LockDisplay(dpy);
GetReq(OpenFont, req);
nbytes = req->nbytes = name ? strlen(name) : 0;
diff --git a/src/LookupCol.c b/src/LookupCol.c
index b7f56d3d..495ed7b5 100644
--- a/src/LookupCol.c
+++ b/src/LookupCol.c
@@ -24,12 +24,15 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/LookupCol.c,v 1.5 2002/12/04 23:18:32 paulo Exp $ */
#define NEED_REPLIES
#include <stdio.h>
#include "Xlibint.h"
#include "Xcmsint.h"
+extern Status _XcmsResolveColorString();
+
extern void _XcmsRGB_to_XColor();
extern void _XUnresolveColor();
@@ -57,22 +60,28 @@ Status XLookupColor (dpy, cmap, spec, def, scr)
/*
* Let's Attempt to use Xcms and i18n approach to Parse Color
*/
- /* copy string to allow overwrite by _XcmsResolveColorString() */
if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- if (_XcmsResolveColorString(ccc, &spec,
- &cmsColor_exact, XcmsRGBFormat) >= XcmsSuccess) {
+ const char *tmpName = spec;
+
+ switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact,
+ XcmsRGBFormat)) {
+ case XcmsSuccess:
+ case XcmsSuccessWithCompression:
_XcmsRGB_to_XColor(&cmsColor_exact, def, 1);
memcpy((char *)scr, (char *)def, sizeof(XColor));
_XUnresolveColor(ccc, scr);
return(1);
+ case XcmsFailure:
+ case _XCMS_NEWNAME:
+ /*
+ * if the result was _XCMS_NEWNAME tmpName points to
+ * a string in cmsColNm.c:pairs table, for example,
+ * gray70 would become tekhvc:0.0/70.0/0.0
+ */
+ break;
}
- /*
- * Otherwise we failed; or spec was changed with yet another
- * name. Thus pass name to the X Server.
- */
}
-
/*
* Xcms and i18n methods failed, so lets pass it to the server
* for parsing.
diff --git a/src/LowerWin.c b/src/LowerWin.c
index fb53df0a..15021fcd 100644
--- a/src/LowerWin.c
+++ b/src/LowerWin.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/LowerWin.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
+int
XLowerWindow(dpy, w)
Display *dpy;
Window w;
diff --git a/src/Macros.c b/src/Macros.c
index 61188588..779431f6 100644
--- a/src/Macros.c
+++ b/src/Macros.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Macros.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
/*
@@ -198,6 +199,7 @@ int XScreenNumberOfScreen (scr)
* naive people are more comfortable with them.
*/
#undef XDestroyImage
+int
XDestroyImage(ximage)
XImage *ximage;
{
@@ -236,6 +238,7 @@ int XAddPixel(ximage, value)
}
+int
XNoOp (dpy)
register Display *dpy;
{
diff --git a/src/MapRaised.c b/src/MapRaised.c
index e00cb75a..de411fb7 100644
--- a/src/MapRaised.c
+++ b/src/MapRaised.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/MapRaised.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
+int
XMapRaised (dpy, w)
Window w;
register Display *dpy;
diff --git a/src/MapSubs.c b/src/MapSubs.c
index 39589e93..d0a6af20 100644
--- a/src/MapSubs.c
+++ b/src/MapSubs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/MapSubs.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
+int
XMapSubwindows(dpy, win)
register Display *dpy;
Window win;
diff --git a/src/MapWindow.c b/src/MapWindow.c
index e0c06efe..eb3c1389 100644
--- a/src/MapWindow.c
+++ b/src/MapWindow.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/MapWindow.c,v 1.4 2001/12/14 19:54:02 dawes Exp $ */
#include "Xlibint.h"
+int
XMapWindow (dpy, w)
Window w;
register Display *dpy;
diff --git a/src/MaskEvent.c b/src/MaskEvent.c
index c51d7b9d..be352d35 100644
--- a/src/MaskEvent.c
+++ b/src/MaskEvent.c
@@ -24,17 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/MaskEvent.c,v 3.6 2001/12/14 19:54:03 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-extern long Const _Xevent_to_mask[];
+extern long const _Xevent_to_mask[];
#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
Button4MotionMask|Button5MotionMask)
@@ -45,13 +40,14 @@ extern long Const _Xevent_to_mask[];
* Events earlier in the queue are not discarded.
*/
+int
XMaskEvent (dpy, mask, event)
register Display *dpy;
long mask; /* Selected event mask. */
register XEvent *event; /* XEvent to be filled in. */
{
register _XQEvent *prev, *qelt;
- unsigned long qe_serial;
+ unsigned long qe_serial = 0;
LockDisplay(dpy);
prev = NULL;
diff --git a/src/Misc.c b/src/Misc.c
index 3b0b17d8..d234c648 100644
--- a/src/Misc.c
+++ b/src/Misc.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Misc.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
@@ -45,6 +46,7 @@ unsigned long XDisplayMotionBufferSize(dpy)
return dpy->motion_buffer;
}
+int
XDisplayKeycodes(dpy, min_keycode_return, max_keycode_return)
Display *dpy;
int *min_keycode_return, *max_keycode_return;
diff --git a/src/ModMap.c b/src/ModMap.c
index 51a32101..c355ef35 100644
--- a/src/ModMap.c
+++ b/src/ModMap.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ModMap.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -108,6 +109,7 @@ XNewModifiermap(keyspermodifier)
}
+int
XFreeModifiermap(map)
XModifierKeymap *map;
{
diff --git a/src/MoveWin.c b/src/MoveWin.c
index 0ec2c8a8..96ed8e2f 100644
--- a/src/MoveWin.c
+++ b/src/MoveWin.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/MoveWin.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
+int
XMoveWindow (dpy, w, x, y)
register Display *dpy;
Window w;
diff --git a/src/NextEvent.c b/src/NextEvent.c
index 40e7528a..14492678 100644
--- a/src/NextEvent.c
+++ b/src/NextEvent.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/NextEvent.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -33,6 +34,7 @@ in this Software without prior written authorization from The Open Group.
* events.
*/
+int
XNextEvent (dpy, event)
register Display *dpy;
register XEvent *event;
diff --git a/src/OCWrap.c b/src/OCWrap.c
index 97a3aee0..eb496814 100644
--- a/src/OCWrap.c
+++ b/src/OCWrap.c
@@ -23,30 +23,24 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/OCWrap.c,v 1.4 2001/07/25 15:04:44 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
-#if NeedVarargsPrototypes
XOC
XCreateOC(XOM om, ...)
-#else
-XOC
-XCreateOC(om, va_alist)
- XOM om;
- va_dcl
-#endif
{
va_list var;
XlcArgList args;
XOC oc;
int num_args;
- Va_start(var, om);
+ va_start(var, om);
_XlcCountVaList(var, &num_args);
va_end(var);
- Va_start(var, om);
+ va_start(var, om);
_XlcVaToArgList(var, num_args, &args);
va_end(var);
@@ -94,26 +88,19 @@ XOMOfOC(oc)
return oc->core.om;
}
-#if NeedVarargsPrototypes
char *
XSetOCValues(XOC oc, ...)
-#else
-char *
-XSetOCValues(oc, va_alist)
- XOC oc;
- va_dcl
-#endif
{
va_list var;
XlcArgList args;
char *ret;
int num_args;
- Va_start(var, oc);
+ va_start(var, oc);
_XlcCountVaList(var, &num_args);
va_end(var);
- Va_start(var, oc);
+ va_start(var, oc);
_XlcVaToArgList(var, num_args, &args);
va_end(var);
@@ -127,26 +114,19 @@ XSetOCValues(oc, va_alist)
return ret;
}
-#if NeedVarargsPrototypes
char *
XGetOCValues(XOC oc, ...)
-#else
-char *
-XGetOCValues(oc, va_alist)
- XOC oc;
- va_dcl
-#endif
{
va_list var;
XlcArgList args;
char *ret;
int num_args;
- Va_start(var, oc);
+ va_start(var, oc);
_XlcCountVaList(var, &num_args);
va_end(var);
- Va_start(var, oc);
+ va_start(var, oc);
_XlcVaToArgList(var, num_args, &args);
va_end(var);
diff --git a/src/OMWrap.c b/src/OMWrap.c
index d97bd647..7a5de02c 100644
--- a/src/OMWrap.c
+++ b/src/OMWrap.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/OMWrap.c,v 1.4 2001/07/25 15:04:44 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
@@ -71,26 +72,19 @@ XCloseOM(om)
return (*om->methods->close)(om);
}
-#if NeedVarargsPrototypes
char *
XSetOMValues(XOM om, ...)
-#else
-char *
-XSetOMValues(om, va_alist)
- XOM om;
- va_dcl
-#endif
{
va_list var;
XlcArgList args;
char *ret;
int num_args;
- Va_start(var, om);
+ va_start(var, om);
_XlcCountVaList(var, &num_args);
va_end(var);
- Va_start(var, om);
+ va_start(var, om);
_XlcVaToArgList(var, num_args, &args);
va_end(var);
@@ -104,26 +98,19 @@ XSetOMValues(om, va_alist)
return ret;
}
-#if NeedVarargsPrototypes
char *
XGetOMValues(XOM om, ...)
-#else
-char *
-XGetOMValues(om, va_alist)
- XOM om;
- va_dcl
-#endif
{
va_list var;
XlcArgList args;
char *ret;
int num_args;
- Va_start(var, om);
+ va_start(var, om);
_XlcCountVaList(var, &num_args);
va_end(var);
- Va_start(var, om);
+ va_start(var, om);
_XlcVaToArgList(var, num_args, &args);
va_end(var);
diff --git a/src/OpenDis.c b/src/OpenDis.c
index 6207fdd2..9e9bd86c 100644
--- a/src/OpenDis.c
+++ b/src/OpenDis.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/OpenDis.c,v 3.12 2001/12/14 19:54:03 dawes Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -32,10 +33,11 @@ in this Software without prior written authorization from The Open Group.
#include <X11/Xatom.h>
#include "bigreqstr.h"
#include <stdio.h>
+#include "Xintconn.h"
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
+#ifdef XKB
+#include "XKBlib.h"
+#endif /* XKB */
#ifdef X_NOT_POSIX
#define Size_t unsigned int
@@ -50,32 +52,30 @@ typedef struct {
int opcode;
} _XBigReqState;
-extern int _Xdebug;
#ifdef WIN32
int *_Xdebug_p = &_Xdebug;
#endif
#ifdef XTHREADS
-int (*_XInitDisplayLock_fn)() = NULL;
-void (*_XFreeDisplayLock_fn)() = NULL;
+#include "locking.h"
+int (*_XInitDisplayLock_fn)(Display *dpy) = NULL;
+void (*_XFreeDisplayLock_fn)(Display *dpy) = NULL;
#define InitDisplayLock(d) (_XInitDisplayLock_fn ? (*_XInitDisplayLock_fn)(d) : Success)
#define FreeDisplayLock(d) if (_XFreeDisplayLock_fn) (*_XFreeDisplayLock_fn)(d)
#else
#define InitDisplayLock(dis) Success
#define FreeDisplayLock(dis)
-#endif
+#endif /* XTHREADS */
static xReq _dummy_request = {
0, 0, 0
};
-static void OutOfMemory();
-static Bool _XBigReqHandler();
+static void OutOfMemory(Display *dpy, char *setup);
+static Bool _XBigReqHandler(Display *dpy, xReply *rep, char *buf, int len,
+ XPointer data);
-extern Bool _XWireToEvent();
-extern Status _XUnknownNativeEvent();
-extern Bool _XUnknownWireEvent();
/*
* Connects to a server, creates a Display object and returns a pointer to
* the newly created Display back to the caller.
@@ -114,10 +114,9 @@ Display *XOpenDisplay (display)
char *conn_auth_name, *conn_auth_data;
int conn_auth_namelen, conn_auth_datalen;
unsigned long mask;
- extern Bool _XSendClientPrefix();
- extern XtransConnInfo _X11TransConnectDisplay();
- extern XID _XAllocID();
- extern void _XAllocIDs();
+
+ bzero((char *) &client, sizeof(client));
+ bzero((char *) &prefix, sizeof(prefix));
/*
* If the display specifier string supplied as an argument to this
@@ -248,7 +247,7 @@ Display *XOpenDisplay (display)
}
/* Set up the output buffers. */
- if ((dpy->bufptr = dpy->buffer = Xmalloc(BUFSIZE)) == NULL) {
+ if ((dpy->bufptr = dpy->buffer = Xcalloc(1, BUFSIZE)) == NULL) {
OutOfMemory (dpy, setup);
return(NULL);
}
@@ -366,6 +365,14 @@ Display *XOpenDisplay (display)
dpy->max_request_size = u.setup->maxRequestSize;
mask = dpy->resource_mask;
dpy->resource_shift = 0;
+ if (!mask)
+ {
+ fprintf (stderr, "Xlib: connection to \"%s\" invalid setup\n",
+ fullname);
+ OutOfMemory(dpy, setup);
+ return (NULL);
+ }
+
while (!(mask & 1)) {
dpy->resource_shift++;
mask = mask >> 1;
@@ -375,6 +382,11 @@ Display *XOpenDisplay (display)
* now extract the vendor string... String must be null terminated,
* padded to multiple of 4 bytes.
*/
+ /* Check for a sane vendor string length */
+ if (u.setup->nbytesVendor > 256) {
+ OutOfMemory(dpy, setup);
+ return (NULL);
+ }
dpy->vendor = (char *) Xmalloc((unsigned) (u.setup->nbytesVendor + 1));
if (dpy->vendor == NULL) {
OutOfMemory(dpy, setup);
@@ -385,6 +397,13 @@ Display *XOpenDisplay (display)
(void) strncpy(dpy->vendor, u.vendor, vendorlen);
dpy->vendor[vendorlen] = '\0';
vendorlen = (vendorlen + 3) & ~3; /* round up */
+/*
+ * validate setup length
+ */
+ if ((int) setuplength - sz_xConnSetup - vendorlen < 0) {
+ OutOfMemory(dpy, setup);
+ return (NULL);
+ }
memmove (setup, u.vendor + vendorlen,
(int) setuplength - sz_xConnSetup - vendorlen);
u.vendor = setup;
@@ -563,6 +582,8 @@ Display *XOpenDisplay (display)
if (_XReply (dpy, (xReply *) &reply, 0, xFalse)) {
if (reply.format == 8 && reply.propertyType == XA_STRING &&
+ (reply.nItems + 1 > 0) &&
+ (reply.nItems <= req->longLength * 4) &&
(dpy->xdefaults = Xmalloc (reply.nItems + 1))) {
_XReadPad (dpy, dpy->xdefaults, reply.nItems);
dpy->xdefaults[reply.nItems] = '\0';
diff --git a/src/ParseCmd.c b/src/ParseCmd.c
index e2e302d0..61e702d8 100644
--- a/src/ParseCmd.c
+++ b/src/ParseCmd.c
@@ -46,6 +46,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/ParseCmd.c,v 1.5 2001/12/14 19:54:03 dawes Exp $ */
/* XrmParseCommand()
@@ -61,9 +62,7 @@ SOFTWARE.
#include <stdio.h>
-static void _XReportParseError(arg, msg)
- XrmOptionDescRec *arg;
- char *msg;
+static void _XReportParseError(XrmOptionDescRec *arg, char *msg)
{
(void) fprintf(stderr, "Error parsing argument \"%s\" (%s); %s\n",
arg->option, arg->specifier, msg);
@@ -95,7 +94,7 @@ void XrmParseCommand(pdb, options, num_options, prefix, argc, argv)
XrmQuark quarks[100];
XrmBinding *start_bindings;
XrmQuark *start_quarks;
- char *optP, *argP, optchar, argchar;
+ char *optP, *argP = NULL, optchar, argchar = 0;
int matches;
enum {DontCare, Check, NotSorted, Sorted} table_is_sorted;
char **argend;
@@ -208,7 +207,7 @@ void XrmParseCommand(pdb, options, num_options, prefix, argc, argv)
case XrmoptionSkipNArgs:
{
- register int j = 1 + (int) options[i].value;
+ register int j = 1 + (long) options[i].value;
if (j > myargc) j = myargc;
for (; j > 0; j--) {
diff --git a/src/ParseCol.c b/src/ParseCol.c
index 1520384a..f66ebb8a 100644
--- a/src/ParseCol.c
+++ b/src/ParseCol.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ParseCol.c,v 1.5 2002/12/04 23:18:32 paulo Exp $ */
#define NEED_REPLIES
#include <stdio.h>
@@ -31,6 +32,7 @@ in this Software without prior written authorization from The Open Group.
#include "Xcmsint.h"
extern void _XcmsRGB_to_XColor();
+extern Status _XcmsResolveColorString();
#if NeedFunctionPrototypes
Status XParseColor (
@@ -94,16 +96,24 @@ Status XParseColor (dpy, cmap, spec, def)
* Let's Attempt to use Xcms and i18n approach to Parse Color
*/
if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- if (_XcmsResolveColorString(ccc, &spec,
- &cmsColor, XcmsRGBFormat) >= XcmsSuccess) {
+ const char *tmpName = spec;
+
+ switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor,
+ XcmsRGBFormat)) {
+ case XcmsSuccess:
+ case XcmsSuccessWithCompression:
cmsColor.pixel = def->pixel;
_XcmsRGB_to_XColor(&cmsColor, def, 1);
return(1);
+ case XcmsFailure:
+ case _XCMS_NEWNAME:
+ /*
+ * if the result was _XCMS_NEWNAME tmpName points to
+ * a string in cmsColNm.c:pairs table, for example,
+ * gray70 would become tekhvc:0.0/70.0/0.0
+ */
+ break;
}
- /*
- * Otherwise we failed; or spec was changed with yet another
- * name. Thus pass name to the X Server.
- */
}
/*
diff --git a/src/ParseGeom.c b/src/ParseGeom.c
index 6691c887..5913c8a7 100644
--- a/src/ParseGeom.c
+++ b/src/ParseGeom.c
@@ -27,6 +27,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ParseGeom.c,v 1.3 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
#include "Xutil.h"
@@ -62,9 +63,7 @@ char *search, *what;
*/
static int
-ReadInteger(string, NextString)
-register char *string;
-char **NextString;
+ReadInteger(char *string, char **NextString)
{
register int Result = 0;
int Sign = 1;
@@ -103,8 +102,8 @@ unsigned int *width, *height; /* RETURN */
{
int mask = NoValue;
register char *strind;
- unsigned int tempWidth, tempHeight;
- int tempX, tempY;
+ unsigned int tempWidth = 0, tempHeight = 0;
+ int tempX = 0, tempY = 0;
char *nextCharacter;
if ( (string == NULL) || (*string == '\0')) return(mask);
diff --git a/src/PeekEvent.c b/src/PeekEvent.c
index ba597eeb..a98eb8f4 100644
--- a/src/PeekEvent.c
+++ b/src/PeekEvent.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PeekEvent.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -34,6 +35,7 @@ in this Software without prior written authorization from The Open Group.
* If none found, flush and wait until there is an event to peek.
*/
+int
XPeekEvent (dpy, event)
register Display *dpy;
register XEvent *event;
diff --git a/src/PeekIfEv.c b/src/PeekIfEv.c
index 6cb9d118..cb57c939 100644
--- a/src/PeekIfEv.c
+++ b/src/PeekIfEv.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PeekIfEv.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -34,6 +35,7 @@ in this Software without prior written authorization from The Open Group.
* If none found, flush, and then wait until one satisfies the predicate.
*/
+int
XPeekIfEvent (dpy, event, predicate, arg)
register Display *dpy;
register XEvent *event;
diff --git a/src/PmapBgnd.c b/src/PmapBgnd.c
index 5a74410f..ac0c573d 100644
--- a/src/PmapBgnd.c
+++ b/src/PmapBgnd.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PmapBgnd.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
+int
XSetWindowBackgroundPixmap(dpy, w, pixmap)
register Display *dpy;
Window w;
diff --git a/src/PmapBord.c b/src/PmapBord.c
index e33738ab..ed3e90a6 100644
--- a/src/PmapBord.c
+++ b/src/PmapBord.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PmapBord.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
+int
XSetWindowBorderPixmap(dpy, w, pixmap)
register Display *dpy;
Window w;
diff --git a/src/PolyReg.c b/src/PolyReg.c
index 4d9a0b52..17fced56 100644
--- a/src/PolyReg.c
+++ b/src/PolyReg.c
@@ -45,6 +45,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
************************************************************************/
+/* $XFree86: xc/lib/X11/PolyReg.c,v 1.6 2001/12/14 19:54:03 dawes Exp $ */
#define LARGE_COORDINATE 1000000
#define SMALL_COORDINATE -LARGE_COORDINATE
@@ -401,7 +402,7 @@ static int PtsToRegion(numFullPtBlocks, iCurPtBlock, FirstPtBlock, reg)
register BOX *extents;
register int numRects;
BOX *prevRects = reg->rects;
-
+
extents = &reg->extents;
numRects = ((numFullPtBlocks * NUMPTSTOBUFFER) + iCurPtBlock) >> 1;
diff --git a/src/PolyTxt.c b/src/PolyTxt.c
index c90a7b04..f7a28c38 100644
--- a/src/PolyTxt.c
+++ b/src/PolyTxt.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PolyTxt.c,v 3.6 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
+int
XDrawText(dpy, d, gc, x, y, items, nitems)
register Display *dpy;
Drawable d;
@@ -111,7 +113,7 @@ XDrawText(dpy, d, gc, x, y, items, nitems)
/* register xTextElt *elt; */
int FirstTimeThrough = True;
char *CharacterOffset = item->chars;
- char *tbuf;
+ char *tbuf = NULL;
while((PartialDelta < -128) || (PartialDelta > 127))
{
diff --git a/src/PolyTxt16.c b/src/PolyTxt16.c
index e75ad5c4..3bc7ac6e 100644
--- a/src/PolyTxt16.c
+++ b/src/PolyTxt16.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PolyTxt16.c,v 1.5 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
+int
XDrawText16(dpy, d, gc, x, y, items, nitems)
register Display *dpy;
Drawable d;
@@ -108,7 +110,7 @@ XDrawText16(dpy, d, gc, x, y, items, nitems)
int nbytes = SIZEOF(xTextElt);
int PartialNChars = item->nchars;
int PartialDelta = item->delta;
- register xTextElt *elt;
+ register xTextElt *elt = NULL;
int FirstTimeThrough = True;
XChar2b *CharacterOffset = item->chars;
diff --git a/src/PropAlloc.c b/src/PropAlloc.c
index 9b95436e..0df32a76 100644
--- a/src/PropAlloc.c
+++ b/src/PropAlloc.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PropAlloc.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
#include "Xlibint.h"
#include "Xutil.h"
@@ -58,7 +59,7 @@ XClassHint *XAllocClassHint ()
{
register XClassHint *h;
- if ((h = (XClassHint *) Xcalloc (1, (unsigned) sizeof (XClassHint))))
+ if ((h = (XClassHint *) Xcalloc (1, (unsigned) sizeof (XClassHint))))
h->res_name = h->res_class = NULL;
return h;
diff --git a/src/PutBEvent.c b/src/PutBEvent.c
index 21f57bb6..7e003ebc 100644
--- a/src/PutBEvent.c
+++ b/src/PutBEvent.c
@@ -26,11 +26,13 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PutBEvent.c,v 1.4 2001/12/14 19:54:03 dawes Exp $ */
/* XPutBackEvent puts an event back at the head of the queue. */
#define NEED_EVENTS
#include "Xlibint.h"
+int
XPutBackEvent (dpy, event)
register Display *dpy;
register XEvent *event;
diff --git a/src/PutImage.c b/src/PutImage.c
index 8c13a097..3ae375d2 100644
--- a/src/PutImage.c
+++ b/src/PutImage.c
@@ -24,26 +24,26 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/PutImage.c,v 3.11 2002/12/09 04:10:56 tsi Exp $ */
#include "Xlibint.h"
#include "Xutil.h"
#include <stdio.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
#if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32))
#define RConst /**/
#else
-#define RConst Const
+#define RConst const
+#endif
+
+#if defined(Lynx) && defined(ROUNDUP)
+#undef ROUNDUP
#endif
/* assumes pad is a power of 2 */
#define ROUNDUP(nbytes, pad) (((nbytes) + ((pad) - 1)) & ~(long)((pad) - 1))
-static unsigned char Const _reverse_byte[0x100] = {
+static unsigned char const _reverse_byte[0x100] = {
0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
@@ -78,7 +78,7 @@ static unsigned char Const _reverse_byte[0x100] = {
0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
};
-static unsigned char Const _reverse_nibs[0x100] = {
+static unsigned char const _reverse_nibs[0x100] = {
0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0,
0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
@@ -113,7 +113,7 @@ static unsigned char Const _reverse_nibs[0x100] = {
0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef, 0xff
};
-
+int
_XReverse_Bytes (bpt, nb)
register unsigned char *bpt;
register int nb;
@@ -282,7 +282,7 @@ SwapNibbles (src, dest, srclen, srcinc, destinc, height)
unsigned int height;
{
register long h, n;
- register Const unsigned char *rev = _reverse_nibs;
+ register const unsigned char *rev = _reverse_nibs;
srcinc -= srclen;
destinc -= srclen;
@@ -329,7 +329,7 @@ SwapBits (src, dest, srclen, srcinc, destinc, height, half_order)
int half_order;
{
register long h, n;
- register Const unsigned char *rev = _reverse_byte;
+ register const unsigned char *rev = _reverse_byte;
srcinc -= srclen;
destinc -= srclen;
@@ -343,10 +343,11 @@ SwapBitsAndTwoBytes (src, dest, srclen, srcinc, destinc, height, half_order)
register unsigned char *src, *dest;
long srclen, srcinc, destinc;
unsigned int height;
+ int half_order;
{
long length = ROUNDUP(srclen, 2);
register long h, n;
- register Const unsigned char *rev = _reverse_byte;
+ register const unsigned char *rev = _reverse_byte;
srcinc -= length;
destinc -= length;
@@ -374,7 +375,7 @@ SwapBitsAndFourBytes (src, dest, srclen, srcinc, destinc, height, half_order)
{
long length = ROUNDUP(srclen, 4);
register long h, n;
- register Const unsigned char *rev = _reverse_byte;
+ register const unsigned char *rev = _reverse_byte;
srcinc -= length;
destinc -= length;
@@ -410,7 +411,7 @@ SwapBitsAndWords (src, dest, srclen, srcinc, destinc, height, half_order)
{
long length = ROUNDUP(srclen, 4);
register long h, n;
- register Const unsigned char *rev = _reverse_byte;
+ register const unsigned char *rev = _reverse_byte;
srcinc -= length;
destinc -= length;
@@ -529,7 +530,7 @@ static void (* RConst (SwapFunction[12][12]))() = {
*
* Defines whether the first half of a unit has the first half of the data
*/
-static int Const HalfOrder[12] = {
+static int const HalfOrder[12] = {
LSBFirst, /* 1Mm */
LSBFirst, /* 2Mm */
LSBFirst, /* 4Mm */
@@ -550,7 +551,7 @@ static int Const HalfOrder[12] = {
* NoSwap or SwapBits) in addition to changing the desired ones.
*/
-static int Const HalfOrderWord[12] = {
+static int const HalfOrderWord[12] = {
MSBFirst, /* 1Mm */
MSBFirst, /* 2Mm */
MSBFirst, /* 4Mm */
@@ -904,6 +905,16 @@ PutSubImage (dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
}
}
+extern void _XInitImageFuncPtrs();
+
+#ifdef USE_DYNAMIC_XCURSOR
+void
+_XNoticePutBitmap (Display *dpy,
+ Drawable draw,
+ XImage *image);
+#endif
+
+int
XPutImage (dpy, d, gc, image, req_xoffset, req_yoffset, x, y, req_width,
req_height)
register Display *dpy;
@@ -951,7 +962,6 @@ XPutImage (dpy, d, gc, image, req_xoffset, req_yoffset, x, y, req_width,
if (dest_bits_per_pixel != image->bits_per_pixel) {
XImage img;
register long i, j;
- extern void _XInitImageFuncPtrs();
/* XXX slow, but works */
img.width = width;
img.height = height;
@@ -994,5 +1004,15 @@ XPutImage (dpy, d, gc, image, req_xoffset, req_yoffset, x, y, req_width,
UnlockDisplay(dpy);
SyncHandle();
+#ifdef USE_DYNAMIC_XCURSOR
+ if (image->bits_per_pixel == 1 &&
+ x == 0 && y == 0 &&
+ width == image->width && height == image->height &&
+ gc->values.function == GXcopy &&
+ (gc->values.plane_mask & 1))
+ {
+ _XNoticePutBitmap (dpy, d, image);
+ }
+#endif
return 0;
}
diff --git a/src/QuColor.c b/src/QuColor.c
index fcd0517f..27e6ff85 100644
--- a/src/QuColor.c
+++ b/src/QuColor.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/QuColor.c,v 1.4 2001/12/14 19:54:04 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
XQueryColor(dpy, cmap, def)
register Display *dpy;
Colormap cmap;
diff --git a/src/QuColors.c b/src/QuColors.c
index 0aaed02a..f6f7c0a0 100644
--- a/src/QuColors.c
+++ b/src/QuColors.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/QuColors.c,v 1.4 2001/12/14 19:54:04 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
XQueryColors(dpy, cmap, defs, ncolors)
register Display *dpy;
Colormap cmap;
diff --git a/src/QuKeybd.c b/src/QuKeybd.c
index 238881ce..c6872118 100644
--- a/src/QuKeybd.c
+++ b/src/QuKeybd.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/QuKeybd.c,v 1.4 2001/12/14 19:54:04 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -32,6 +33,7 @@ struct kmap {
char map[32];
};
+int
XQueryKeymap(dpy, keys)
register Display *dpy;
char keys[32];
diff --git a/src/QuTextE16.c b/src/QuTextE16.c
index 66b3149f..e78ae368 100644
--- a/src/QuTextE16.c
+++ b/src/QuTextE16.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/QuTextE16.c,v 1.4 2001/12/14 19:54:04 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XQueryTextExtents16 (
register Display *dpy,
diff --git a/src/QuTextExt.c b/src/QuTextExt.c
index bcf8ee17..34da05ed 100644
--- a/src/QuTextExt.c
+++ b/src/QuTextExt.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/QuTextExt.c,v 1.4 2001/12/14 19:54:04 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XQueryTextExtents (
register Display *dpy,
diff --git a/src/QuTree.c b/src/QuTree.c
index 8c6fcc7a..2b28b504 100644
--- a/src/QuTree.c
+++ b/src/QuTree.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/QuTree.c,v 1.6 2001/12/14 19:54:04 dawes Exp $ */
#define NEED_REPLIES
#include "Xlibint.h"
@@ -59,7 +60,7 @@ Status XQueryTree (dpy, w, root, parent, children, nchildren)
SyncHandle();
return (0);
}
- _XRead32 (dpy, (char *) *children, nbytes);
+ _XRead32 (dpy, (long *) *children, nbytes);
}
*parent = rep.parent;
*root = rep.root;
diff --git a/src/Quarks.c b/src/Quarks.c
index 98b1b761..03f43bcc 100644
--- a/src/Quarks.c
+++ b/src/Quarks.c
@@ -49,6 +49,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Quarks.c,v 1.5 2001/12/14 19:54:04 dawes Exp $ */
#include "Xlibint.h"
#include <X11/Xresource.h>
@@ -111,8 +112,7 @@ static XrmQuark nextUniq = -1; /* next quark from XrmUniqueQuark */
static char *neverFreeTable = NULL;
static int neverFreeTableSize = 0;
-static char *permalloc(length)
- register unsigned int length;
+static char *permalloc(unsigned int length)
{
char *ret;
@@ -136,10 +136,9 @@ typedef struct {char a; unsigned long b;} TestType2;
#endif
#ifdef XTHREADS
-static char *_Xpermalloc();
+static char *_Xpermalloc(unsigned int length);
-char *Xpermalloc(length)
- unsigned int length;
+char *Xpermalloc(unsigned int length)
{
char *p;
@@ -152,8 +151,7 @@ char *Xpermalloc(length)
static
#endif /* XTHREADS */
-char *Xpermalloc(length)
- unsigned int length;
+char *Xpermalloc(unsigned int length)
{
int i;
@@ -176,7 +174,7 @@ char *Xpermalloc(length)
}
static Bool
-ExpandQuarkTable()
+ExpandQuarkTable(void)
{
unsigned long oldmask, newmask;
register char c, *s;
diff --git a/src/RaiseWin.c b/src/RaiseWin.c
index 7524a5ae..bc95a382 100644
--- a/src/RaiseWin.c
+++ b/src/RaiseWin.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RaiseWin.c,v 1.4 2001/12/14 19:54:04 dawes Exp $ */
#include "Xlibint.h"
+int
XRaiseWindow (dpy, w)
register Display *dpy;
Window w;
diff --git a/src/RdBitF.c b/src/RdBitF.c
index 2b7b3966..c8792989 100644
--- a/src/RdBitF.c
+++ b/src/RdBitF.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RdBitF.c,v 3.5 2002/05/31 18:45:41 dawes Exp $ */
/*
* Code to read bitmaps from disk files. Interprets
@@ -93,7 +94,8 @@ static void initHexTable()
/*
* read next hex value in the input stream, return -1 if EOF
*/
-static NextInt (fstream)
+static int
+NextInt (fstream)
FILE *fstream;
{
int ch;
@@ -156,6 +158,9 @@ int XReadBitmapFileData (filename, width, height, data, x_hot, y_hot)
/* first time initialization */
if (initialized == False) initHexTable();
+#ifdef __UNIXOS2__
+ filename = __XOS2RedirRoot(filename);
+#endif
if (!(fstream = fopen(filename, "r")))
return BitmapOpenFailed;
diff --git a/src/RecolorC.c b/src/RecolorC.c
index 06cf31ce..23fdc6ea 100644
--- a/src/RecolorC.c
+++ b/src/RecolorC.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RecolorC.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
+int
XRecolorCursor(dpy, cursor, foreground, background)
register Display *dpy;
Cursor cursor;
diff --git a/src/ReconfWin.c b/src/ReconfWin.c
index e1e2fe59..93ae47de 100644
--- a/src/ReconfWin.c
+++ b/src/ReconfWin.c
@@ -24,12 +24,14 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ReconfWin.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
CWBorderWidth|CWSibling|CWStackMode)
+int
XConfigureWindow(dpy, w, mask, changes)
register Display *dpy;
Window w;
diff --git a/src/Region.c b/src/Region.c
index c8eeabd6..bf6a58c7 100644
--- a/src/Region.c
+++ b/src/Region.c
@@ -45,6 +45,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
************************************************************************/
+/* $XFree86: xc/lib/X11/Region.c,v 1.9 2002/06/04 22:19:57 dawes Exp $ */
/*
* The functions in this file implement the Region abstraction, similar to one
* used in the X11 sample server. A Region is simply an area, as the name
@@ -108,6 +109,7 @@ XCreateRegion()
return( temp );
}
+int
XClipBox( r, rect )
Region r;
XRectangle *rect;
@@ -119,6 +121,7 @@ XClipBox( r, rect )
return 1;
}
+int
XUnionRectWithRegion(rect, source, dest)
register XRectangle *rect;
Region source, dest;
@@ -202,6 +205,9 @@ miSetExtents (pReg)
assert(pExtents->x1 < pExtents->x2);
}
+extern void _XSetClipRectangles();
+
+int
XSetRegion( dpy, gc, r )
Display *dpy;
GC gc;
@@ -211,7 +217,6 @@ XSetRegion( dpy, gc, r )
register XRectangle *xr, *pr;
register BOX *pb;
unsigned long total;
- extern void _XSetClipRectangles();
LockDisplay (dpy);
total = r->numRects * sizeof (XRectangle);
@@ -232,6 +237,7 @@ XSetRegion( dpy, gc, r )
return 1;
}
+int
XDestroyRegion( r )
Region r;
{
@@ -246,6 +252,7 @@ XDestroyRegion( r )
added by raymond
*/
+int
XOffsetRegion(pRegion, x, y)
register Region pRegion;
register int x;
@@ -325,6 +332,7 @@ Compress(r, s, t, dx, xdir, grow)
#undef ZShiftRegion
#undef ZCopyRegion
+int
XShrinkRegion(r, dx, dy)
Region r;
int dx, dy;
@@ -379,7 +387,7 @@ static BOX
*-----------------------------------------------------------------------
*/
/* static void*/
-static
+static int
miIntersectO (pReg, r1, r1End, r2, r2End, y1, y2)
register Region pReg;
register BoxPtr r1;
@@ -443,6 +451,7 @@ miIntersectO (pReg, r1, r1End, r2, r2End, y1, y2)
return 0; /* lint */
}
+int
XIntersectRegion(reg1, reg2, newReg)
Region reg1;
Region reg2; /* source regions */
@@ -653,7 +662,7 @@ TopRects(newReg, rects, reg1, reg2, FirstRect)
*-----------------------------------------------------------------------
*/
/* static int*/
-static
+static int
miCoalesce (pReg, prevStart, curStart)
register Region pReg; /* Region to coalesce */
int prevStart; /* Index of start of previous band */
@@ -1095,7 +1104,7 @@ miRegionOp(newReg, reg1, reg2, overlapFunc, nonOverlap1Func, nonOverlap2Func)
*-----------------------------------------------------------------------
*/
/* static void*/
-static
+static int
miUnionNonO (pReg, r, rEnd, y1, y2)
register Region pReg;
register BoxPtr r;
@@ -1144,7 +1153,7 @@ miUnionNonO (pReg, r, rEnd, y1, y2)
*/
/* static void*/
-static
+static int
miUnionO (pReg, r1, r1End, r2, r2End, y1, y2)
register Region pReg;
register BoxPtr r1;
@@ -1210,6 +1219,7 @@ miUnionO (pReg, r1, r1End, r2, r2End, y1, y2)
return 0; /* lint */
}
+int
XUnionRegion(reg1, reg2, newReg)
Region reg1;
Region reg2; /* source regions */
@@ -1296,7 +1306,7 @@ XUnionRegion(reg1, reg2, newReg)
*-----------------------------------------------------------------------
*/
/* static void*/
-static
+static int
miSubtractNonO1 (pReg, r, rEnd, y1, y2)
register Region pReg;
register BoxPtr r;
@@ -1343,7 +1353,7 @@ miSubtractNonO1 (pReg, r, rEnd, y1, y2)
*-----------------------------------------------------------------------
*/
/* static void*/
-static
+static int
miSubtractO (pReg, r1, r1End, r2, r2End, y1, y2)
register Region pReg;
register BoxPtr r1;
@@ -1447,7 +1457,8 @@ miSubtractO (pReg, r1, r1End, r2, r2End, y1, y2)
assert(pReg->numRects<=pReg->size);
}
r1++;
- x1 = r1->x1;
+ if (r1 != r1End)
+ x1 = r1->x1;
}
}
@@ -1491,6 +1502,7 @@ miSubtractO (pReg, r1, r1End, r2, r2End, y1, y2)
*-----------------------------------------------------------------------
*/
+int
XSubtractRegion(regM, regS, regD)
Region regM;
Region regS;
diff --git a/src/RegstFlt.c b/src/RegstFlt.c
index 901e5f30..ccc0eb7b 100644
--- a/src/RegstFlt.c
+++ b/src/RegstFlt.c
@@ -52,6 +52,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RegstFlt.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
diff --git a/src/RepWindow.c b/src/RepWindow.c
index ca1f6315..897c5288 100644
--- a/src/RepWindow.c
+++ b/src/RepWindow.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RepWindow.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
+int
XReparentWindow(dpy, w, p, x, y)
register Display *dpy;
Window w, p;
diff --git a/src/RestackWs.c b/src/RestackWs.c
index 1051fde6..283fd0b6 100644
--- a/src/RestackWs.c
+++ b/src/RestackWs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RestackWs.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
+int
XRestackWindows (dpy, windows, n)
register Display *dpy;
register Window *windows;
diff --git a/src/RotProp.c b/src/RotProp.c
index 36c3c1df..d3220ae3 100644
--- a/src/RotProp.c
+++ b/src/RotProp.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/RotProp.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
+int
XRotateWindowProperties(dpy, w, properties, nprops, npositions)
register Display *dpy;
Window w;
diff --git a/src/SelInput.c b/src/SelInput.c
index c42a6674..493d3801 100644
--- a/src/SelInput.c
+++ b/src/SelInput.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SelInput.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#include "Xlibint.h"
+int
XSelectInput (dpy, w, mask)
register Display *dpy;
Window w;
diff --git a/src/SendEvent.c b/src/SendEvent.c
index d853e273..e6db9d3e 100644
--- a/src/SendEvent.c
+++ b/src/SendEvent.c
@@ -24,11 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SendEvent.c,v 1.4 2001/12/14 19:54:05 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
-extern Status _XEventToWire();
/*
* In order to avoid all images requiring _XEventToWire, we install the
* event converter here if it has never been installed.
diff --git a/src/SetBack.c b/src/SetBack.c
index aea142c9..80851b32 100644
--- a/src/SetBack.c
+++ b/src/SetBack.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetBack.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetBackground (dpy, gc, background)
register Display *dpy;
GC gc;
diff --git a/src/SetCRects.c b/src/SetCRects.c
index 8f03b7de..3b9da0df 100644
--- a/src/SetCRects.c
+++ b/src/SetCRects.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetCRects.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
@@ -60,6 +61,7 @@ void _XSetClipRectangles (dpy, gc, clip_x_origin, clip_y_origin, rectangles, n,
gc->dirty = dirty;
}
+int
XSetClipRectangles (dpy, gc, clip_x_origin, clip_y_origin, rectangles, n,
ordering)
register Display *dpy;
diff --git a/src/SetClMask.c b/src/SetClMask.c
index 75d97ab4..338eb529 100644
--- a/src/SetClMask.c
+++ b/src/SetClMask.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetClMask.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetClipMask (dpy, gc, mask)
register Display *dpy;
GC gc;
diff --git a/src/SetClOrig.c b/src/SetClOrig.c
index c471234e..921d18b6 100644
--- a/src/SetClOrig.c
+++ b/src/SetClOrig.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetClOrig.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetClipOrigin (dpy, gc, xorig, yorig)
register Display *dpy;
GC gc;
diff --git a/src/SetDashes.c b/src/SetDashes.c
index ce3a5e60..4f59531a 100644
--- a/src/SetDashes.c
+++ b/src/SetDashes.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetDashes.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XSetDashes (
register Display *dpy,
diff --git a/src/SetFPath.c b/src/SetFPath.c
index acf0a1d0..f223648e 100644
--- a/src/SetFPath.c
+++ b/src/SetFPath.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetFPath.c,v 1.6 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
diff --git a/src/SetFont.c b/src/SetFont.c
index 57f7294f..72a3ba7e 100644
--- a/src/SetFont.c
+++ b/src/SetFont.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetFont.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetFont (dpy, gc, font)
register Display *dpy;
GC gc;
diff --git a/src/SetFore.c b/src/SetFore.c
index d8773494..d2528c76 100644
--- a/src/SetFore.c
+++ b/src/SetFore.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetFore.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetForeground (dpy, gc, foreground)
register Display *dpy;
GC gc;
diff --git a/src/SetFunc.c b/src/SetFunc.c
index b4154672..3ec758ec 100644
--- a/src/SetFunc.c
+++ b/src/SetFunc.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetFunc.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetFunction (dpy, gc, function)
register Display *dpy;
GC gc;
diff --git a/src/SetHints.c b/src/SetHints.c
index f8201921..68fe5b6f 100644
--- a/src/SetHints.c
+++ b/src/SetHints.c
@@ -46,6 +46,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/SetHints.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xutil.h>
@@ -55,6 +56,7 @@ SOFTWARE.
#define safestrlen(s) ((s) ? strlen(s) : 0)
+int
XSetSizeHints(dpy, w, hints, property) /* old routine */
Display *dpy;
Window w;
@@ -87,6 +89,7 @@ XSetSizeHints(dpy, w, hints, property) /* old routine */
* WM_HINTS type: WM_HINTS format:32
*/
+int
XSetWMHints (dpy, w, wmhints)
Display *dpy;
Window w;
@@ -114,6 +117,7 @@ XSetWMHints (dpy, w, wmhints)
* WM_ZOOM_HINTS type: WM_SIZE_HINTS format: 32
*/
+int
XSetZoomHints (dpy, w, zhints)
Display *dpy;
Window w;
@@ -128,6 +132,7 @@ XSetZoomHints (dpy, w, zhints)
* WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
*/
+int
XSetNormalHints (dpy, w, hints) /* old routine */
Display *dpy;
Window w;
@@ -144,6 +149,7 @@ XSetNormalHints (dpy, w, hints) /* old routine */
* routine will take care of converting to host to network data structures.
*/
+int
XSetIconSizes (dpy, w, list, count)
Display *dpy;
Window w; /* typically, root */
@@ -174,6 +180,7 @@ XSetIconSizes (dpy, w, list, count)
return 1;
}
+int
XSetCommand (dpy, w, argv, argc)
Display *dpy;
Window w;
@@ -211,6 +218,7 @@ XSetCommand (dpy, w, argv, argc)
* WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
*/
+int
#if NeedFunctionPrototypes
XSetStandardProperties (
Display *dpy,
@@ -256,6 +264,7 @@ XSetStandardProperties (dpy, w, name, icon_string, icon_pixmap, argv, argc, hint
return 1;
}
+int
XSetTransientForHint(dpy, w, propWindow)
Display *dpy;
Window w;
@@ -265,6 +274,7 @@ XSetTransientForHint(dpy, w, propWindow)
PropModeReplace, (unsigned char *) &propWindow, 1);
}
+int
XSetClassHint(dpy, w, classhint)
Display *dpy;
Window w;
diff --git a/src/SetIFocus.c b/src/SetIFocus.c
index 550a8cba..084b77a1 100644
--- a/src/SetIFocus.c
+++ b/src/SetIFocus.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetIFocus.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetInputFocus(dpy, focus, revert_to, time)
register Display *dpy;
Window focus;
diff --git a/src/SetLStyle.c b/src/SetLStyle.c
index a0352407..da51591b 100644
--- a/src/SetLStyle.c
+++ b/src/SetLStyle.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetLStyle.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetLineAttributes(dpy, gc, linewidth, linestyle, capstyle, joinstyle)
register Display *dpy;
GC gc;
diff --git a/src/SetLocale.c b/src/SetLocale.c
index faa72941..ac33f029 100644
--- a/src/SetLocale.c
+++ b/src/SetLocale.c
@@ -55,25 +55,24 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetLocale.c,v 3.17 2002/05/31 18:45:41 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
#include <X11/Xlocale.h>
#include <X11/Xos.h>
+#define MAXLOCALE 64 /* buffer size of locale name */
+
#ifdef X_LOCALE
/* alternative setlocale() for when the OS does not provide one */
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
-
#if NeedFunctionPrototypes
char *
_Xsetlocale(
int category,
- _Xconst char *name
+ _Xconst char *name
)
#else
char *
@@ -98,6 +97,8 @@ _Xsetlocale(category, name)
name = getenv("LC_CTYPE");
if (!name || !*name)
name = getenv("LANG");
+ if (name && strlen(name) >= MAXLOCALE)
+ name = NULL;
if (!name || !*name || !_XOpenLC(name))
name = "C";
old_name = xsl_name;
@@ -143,86 +144,103 @@ _XlcMapOSLocaleName(osname, siname)
char *osname;
char *siname;
{
-#if defined(hpux) || defined(CSRG_BASED) || defined(sun) || defined(SVR4) || defined(sgi) || defined(__osf__) || defined(AIXV3) || defined(ultrix) || defined(WIN32)
-#ifdef hpux
-#ifndef _LastCategory
-/* HPUX 9 and earlier */
-#define SKIPCOUNT 2
-#define STARTCHAR ':'
-#define ENDCHAR ';'
-#else
-/* HPUX 10 */
-#define ENDCHAR ' '
-#endif
-#else
-#ifdef ultrix
-#define SKIPCOUNT 2
-#define STARTCHAR '\001'
-#define ENDCHAR '\001'
-#else
-#ifdef WIN32
-#define SKIPCOUNT 1
-#define STARTCHAR '='
-#define ENDCHAR ';'
-#define WHITEFILL
-#else
-#if defined(__osf__) || (defined(AIXV3) && !defined(AIXV4))
-#define STARTCHAR ' '
-#define ENDCHAR ' '
-#else
-#if !defined(sun) || defined(SVR4)
-#define STARTCHAR '/'
-#endif
-#define ENDCHAR '/'
-#endif
-#endif
-#endif
-#endif
+#if defined(hpux) || defined(CSRG_BASED) || defined(sun) || defined(SVR4) || defined(sgi) || defined(__osf__) || defined(AIXV3) || defined(ultrix) || defined(WIN32) || defined(__UNIXOS2__) || defined(linux)
+# ifdef hpux
+# ifndef _LastCategory
+ /* HPUX 9 and earlier */
+# define SKIPCOUNT 2
+# define STARTCHAR ':'
+# define ENDCHAR ';'
+# else
+ /* HPUX 10 */
+# define ENDCHAR ' '
+# endif
+# else
+# ifdef ultrix
+# define SKIPCOUNT 2
+# define STARTCHAR '\001'
+# define ENDCHAR '\001'
+# else
+# if defined(WIN32) || defined(__UNIXOS2__)
+# define SKIPCOUNT 1
+# define STARTCHAR '='
+# define ENDCHAR ';'
+# define WHITEFILL
+# else
+# if defined(__osf__) || (defined(AIXV3) && !defined(AIXV4))
+# define STARTCHAR ' '
+# define ENDCHAR ' '
+# else
+# if defined(linux)
+# define STARTSTR "LC_CTYPE="
+# define ENDCHAR ';'
+# else
+# if !defined(sun) || defined(SVR4)
+# define STARTCHAR '/'
+# define ENDCHAR '/'
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
char *start;
char *end;
int len;
-#ifdef SKIPCOUNT
+# ifdef SKIPCOUNT
int n;
-#endif
+# endif
start = osname;
-#ifdef SKIPCOUNT
+# ifdef SKIPCOUNT
for (n = SKIPCOUNT;
--n >= 0 && start && (start = strchr (start, STARTCHAR));
start++)
;
if (!start)
start = osname;
-#endif
-#ifdef STARTCHAR
- if (start && (start = strchr (start, STARTCHAR))) {
+# endif
+# ifdef STARTCHAR
+ if (start && (start = strchr (start, STARTCHAR)))
+# elif defined (STARTSTR)
+ if (start && (start = strstr (start,STARTSTR)))
+# endif
+ {
+# ifdef STARTCHAR
start++;
-#endif
- if (end = strchr (start, ENDCHAR)) {
+# elif defined (STARTSTR)
+ start += strlen(STARTSTR);
+# endif
+ if ((end = strchr (start, ENDCHAR))) {
len = end - start;
+ if (len >= MAXLOCALE)
+ len = MAXLOCALE - 1;
strncpy(siname, start, len);
*(siname + len) = '\0';
-#ifdef WHITEFILL
+# ifdef WHITEFILL
for (start = siname; start = strchr(start, ' '); )
*start++ = '-';
-#endif
+# endif
return siname;
-#ifdef STARTCHAR
- }
-#endif
+ } else /* if no ENDCHAR is found we are at the end of the line */
+ return start;
}
-#ifdef WHITEFILL
+# ifdef WHITEFILL
if (strchr(osname, ' ')) {
- strcpy(siname, osname);
+ len = strlen(osname);
+ if (len >= MAXLOCALE - 1)
+ len = MAXLOCALE - 1;
+ strncpy(siname, osname, len);
+ *(siname + len) = '\0';
for (start = siname; start = strchr(start, ' '); )
*start++ = '-';
return siname;
}
-#endif
-#undef STARTCHAR
-#undef ENDCHAR
-#undef WHITEFILL
+# endif
+# undef STARTCHAR
+# undef ENDCHAR
+# undef WHITEFILL
#endif
return osname;
}
diff --git a/src/SetPMask.c b/src/SetPMask.c
index d712c12b..fbb94ef3 100644
--- a/src/SetPMask.c
+++ b/src/SetPMask.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetPMask.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetPlaneMask (dpy, gc, planemask)
register Display *dpy;
GC gc;
diff --git a/src/SetPntMap.c b/src/SetPntMap.c
index 52971616..80dd63aa 100644
--- a/src/SetPntMap.c
+++ b/src/SetPntMap.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetPntMap.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#define NEED_REPLIES
@@ -57,6 +58,7 @@ int XSetPointerMapping (dpy, map, nmaps)
return ((int) rep.success);
}
+int
XChangeKeyboardMapping (dpy, first_keycode, keysyms_per_keycode,
keysyms, nkeycodes)
register Display *dpy;
diff --git a/src/SetSOwner.c b/src/SetSOwner.c
index 67fc6ba2..1426ee25 100644
--- a/src/SetSOwner.c
+++ b/src/SetSOwner.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetSOwner.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetSelectionOwner(dpy, selection, owner, time)
register Display *dpy;
Atom selection;
diff --git a/src/SetSSaver.c b/src/SetSSaver.c
index 42ca05b0..227a9250 100644
--- a/src/SetSSaver.c
+++ b/src/SetSSaver.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetSSaver.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetScreenSaver(dpy, timeout, interval, prefer_blank, allow_exp)
register Display *dpy;
int timeout, interval, prefer_blank, allow_exp;
diff --git a/src/SetState.c b/src/SetState.c
index ad91d8fa..79658104 100644
--- a/src/SetState.c
+++ b/src/SetState.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetState.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetState(dpy, gc, foreground, background, function, planemask)
register Display *dpy;
GC gc;
diff --git a/src/SetStip.c b/src/SetStip.c
index 3c6948f3..84d90012 100644
--- a/src/SetStip.c
+++ b/src/SetStip.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetStip.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetStipple (dpy, gc, stipple)
register Display *dpy;
GC gc;
diff --git a/src/SetTSOrig.c b/src/SetTSOrig.c
index 6f6a2bad..ef449ca0 100644
--- a/src/SetTSOrig.c
+++ b/src/SetTSOrig.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetTSOrig.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetTSOrigin (dpy, gc, x, y)
register Display *dpy;
GC gc;
diff --git a/src/SetTile.c b/src/SetTile.c
index 296e74aa..0199ae7c 100644
--- a/src/SetTile.c
+++ b/src/SetTile.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/SetTile.c,v 1.4 2001/12/14 19:54:06 dawes Exp $ */
#include "Xlibint.h"
+int
XSetTile (dpy, gc, tile)
register Display *dpy;
GC gc;
diff --git a/src/StBytes.c b/src/StBytes.c
index 880745f3..f1d8cf09 100644
--- a/src/StBytes.c
+++ b/src/StBytes.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/StBytes.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xatom.h>
@@ -39,6 +40,7 @@ static Atom n_to_atom[8] = {
XA_CUT_BUFFER6,
XA_CUT_BUFFER7};
+int
XRotateBuffers (dpy, rotate)
register Display *dpy;
int rotate;
@@ -79,6 +81,7 @@ char *XFetchBytes (dpy, nbytes)
return (XFetchBuffer (dpy, nbytes, 0));
}
+int
#if NeedFunctionPrototypes
XStoreBuffer (
register Display *dpy,
@@ -98,6 +101,7 @@ XStoreBuffer (dpy, bytes, nbytes, buffer)
XA_STRING, 8, PropModeReplace, (unsigned char *) bytes, nbytes);
}
+int
#if NeedFunctionPrototypes
XStoreBytes (
register Display *dpy,
diff --git a/src/StColor.c b/src/StColor.c
index 332fdf49..0f90cfd7 100644
--- a/src/StColor.c
+++ b/src/StColor.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/StColor.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XStoreColor(dpy, cmap, def)
register Display *dpy;
Colormap cmap;
diff --git a/src/StColors.c b/src/StColors.c
index cf970950..04073979 100644
--- a/src/StColors.c
+++ b/src/StColors.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/StColors.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XStoreColors(dpy, cmap, defs, ncolors)
register Display *dpy;
Colormap cmap;
diff --git a/src/StNColor.c b/src/StNColor.c
index 04d27d87..5b039ad7 100644
--- a/src/StNColor.c
+++ b/src/StNColor.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/StNColor.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include <stdio.h>
#include "Xlibint.h"
@@ -31,6 +32,10 @@ in this Software without prior written authorization from The Open Group.
extern void _XcmsRGB_to_XColor();
+/* cmsColNm.c */
+Status _XcmsResolveColorString();
+
+int
#if NeedFunctionPrototypes
XStoreNamedColor(
register Display *dpy,
diff --git a/src/StName.c b/src/StName.c
index 80fc2dcf..d8ecbe1a 100644
--- a/src/StName.c
+++ b/src/StName.c
@@ -24,10 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/StName.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xatom.h>
+int
#if NeedFunctionPrototypes
XStoreName (
register Display *dpy,
@@ -45,6 +47,7 @@ XStoreName (dpy, w, name)
name ? strlen(name) : 0);
}
+int
#if NeedFunctionPrototypes
XSetIconName (
register Display *dpy,
diff --git a/src/StrKeysym.c b/src/StrKeysym.c
index e378f93b..21949b14 100644
--- a/src/StrKeysym.c
+++ b/src/StrKeysym.c
@@ -24,22 +24,14 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/StrKeysym.c,v 3.6 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
#include <X11/Xresource.h>
#include <X11/keysymdef.h>
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
extern XrmQuark _XrmInternalStringToQuark();
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
typedef unsigned long Signature;
#define NEEDKTABLE
@@ -85,10 +77,10 @@ KeySym XStringToKeysym(s)
register int i, n;
int h;
register Signature sig = 0;
- register Const char *p = s;
+ register const char *p = s;
register int c;
register int idx;
- Const unsigned char *entry;
+ const unsigned char *entry;
unsigned char sig1, sig2;
KeySym val;
@@ -124,7 +116,6 @@ KeySym XStringToKeysym(s)
XrmValue result;
XrmRepresentation from_type;
char c;
- KeySym val;
XrmQuark names[2];
names[0] = _XrmInternalStringToQuark(s, p - s - 1, sig, False);
@@ -137,12 +128,27 @@ KeySym XStringToKeysym(s)
{
c = ((char *)result.addr)[i];
if ('0' <= c && c <= '9') val = (val<<4)+c-'0';
- else if ('a' <= c && c <= 'z') val = (val<<4)+c-'a'+10;
- else if ('A' <= c && c <= 'Z') val = (val<<4)+c-'A'+10;
+ else if ('a' <= c && c <= 'f') val = (val<<4)+c-'a'+10;
+ else if ('A' <= c && c <= 'F') val = (val<<4)+c-'A'+10;
else return NoSymbol;
}
return val;
}
}
+
+ if (*s == 'U') {
+ val = 0;
+ for (p = &s[1]; *p; p++) {
+ c = *p;
+ if ('0' <= c && c <= '9') val = (val<<4)+c-'0';
+ else if ('a' <= c && c <= 'f') val = (val<<4)+c-'a'+10;
+ else if ('A' <= c && c <= 'F') val = (val<<4)+c-'A'+10;
+ else return NoSymbol;
+
+ }
+ if (val >= 0x01000000)
+ return NoSymbol;
+ return val | 0x01000000;
+ }
return (NoSymbol);
}
diff --git a/src/Sync.c b/src/Sync.c
index 98b5463b..50527a99 100644
--- a/src/Sync.c
+++ b/src/Sync.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Sync.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -31,6 +32,7 @@ in this Software without prior written authorization from The Open Group.
/* Synchronize with errors and events, optionally discarding pending events */
+int
XSync (dpy, discard)
register Display *dpy;
Bool discard;
diff --git a/src/Text.c b/src/Text.c
index e8d3df45..1a071599 100644
--- a/src/Text.c
+++ b/src/Text.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Text.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XDrawString(
register Display *dpy,
diff --git a/src/Text16.c b/src/Text16.c
index f8714459..a20f3a3c 100644
--- a/src/Text16.c
+++ b/src/Text16.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Text16.c,v 1.5 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
#if NeedFunctionPrototypes
XDrawString16(
register Display *dpy,
@@ -99,7 +101,7 @@ XDrawString16(dpy, d, gc, x, y, string, length)
}
}
#else
- memcpy ((char *) (elt + 1), (char *)CharacterOffset, 254 * 2);
+ memcpy (((char *) elt) + 2, (char *)CharacterOffset, 254 * 2);
#endif
PartialNChars = PartialNChars - 254;
CharacterOffset += 254;
@@ -122,7 +124,7 @@ XDrawString16(dpy, d, gc, x, y, string, length)
}
}
#else
- memcpy((char *)(elt + 1), (char *)CharacterOffset, PartialNChars * 2);
+ memcpy(((char *)elt) + 2, (char *)CharacterOffset, PartialNChars * 2);
#endif
}
}
diff --git a/src/TextExt.c b/src/TextExt.c
index d7f4ff8a..9c68ee82 100644
--- a/src/TextExt.c
+++ b/src/TextExt.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/TextExt.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
/*
* Copyright 1995 by FUJITSU LIMITED
* This is source code modified by FUJITSU LIMITED under the Joint
@@ -68,6 +69,7 @@ from The Open Group.
* first row of the font (i.e. byte1 == 0), we can do some optimizations beyond
* what is done in XTextExtents16.
*/
+int
#if NeedFunctionPrototypes
XTextExtents (
XFontStruct *fs,
diff --git a/src/TextExt16.c b/src/TextExt16.c
index 24f888ec..14064f6c 100644
--- a/src/TextExt16.c
+++ b/src/TextExt16.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/TextExt16.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
/*
* Copyright 1995 by FUJITSU LIMITED
* This is source code modified by FUJITSU LIMITED under the Joint
@@ -42,6 +43,7 @@ from The Open Group.
* XTextExtents16 - compute the extents of string given as a sequence of
* XChar2bs.
*/
+int
#if NeedFunctionPrototypes
XTextExtents16 (
XFontStruct *fs,
diff --git a/src/TextToStr.c b/src/TextToStr.c
index 2ac934c2..2c0b1f6d 100644
--- a/src/TextToStr.c
+++ b/src/TextToStr.c
@@ -25,6 +25,8 @@ in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/TextToStr.c,v 1.5 2001/12/14 19:54:07 dawes Exp $ */
+
#include <X11/Xlibint.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
@@ -110,6 +112,7 @@ void XFreeStringList (list)
if (list) {
if (list[0]) Xfree (list[0]);
Xfree ((char *) list);
+ list = NULL;
}
}
diff --git a/src/UIThrStubs.c b/src/UIThrStubs.c
new file mode 100644
index 00000000..64be42a8
--- /dev/null
+++ b/src/UIThrStubs.c
@@ -0,0 +1,157 @@
+/*
+ * $XFree86: xc/lib/XThrStub/UIThrStubs.c,v 3.4 2003/01/15 02:55:16 dawes Exp $
+ *
+ * Copyright (c) 1995 David E. Wexelblat. All rights reserved
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL DAVID E. WEXELBLAT BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of David E. Wexelblat shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization
+ * from David E. Wexelblat.
+ *
+ */
+
+/*
+ * Stubs for thread functions needed by the X library. Supports
+ * UnixWare 2.x threads; may support Solaris 2 threads as well, but not
+ * tested. Defining things this way removes the dependency of the X
+ * library on the threads library, but still supports threads if the user
+ * specificies the thread library on the link line.
+ */
+
+/*
+ * Modifications by Carlos A M dos Santos, XFree86 Project, November 1999.
+ *
+ * Explanation from <X11/Xos_r.h>:
+ * The structure below is complicated, mostly because P1003.1c (the
+ * IEEE POSIX Threads spec) went through lots of drafts, and some
+ * vendors shipped systems based on draft API that were changed later.
+ * Unfortunately POSIX did not provide a feature-test macro for
+ * distinguishing each of the drafts.
+ */
+
+#ifdef CTHREADS
+#include <cthreads.h>
+typedef cthread_t xthread_t;
+#define xthread_self cthread_self
+#pragma weak cthread_self = _Xthr_self_stub_
+#define xmutex_init mutex_init
+#pragma weak mutex_init = _Xthr_zero_stub_
+#pragma weak mutex_clear = _Xthr_zero_stub_
+#pragma weak mutex_lock = _Xthr_zero_stub_
+#pragma weak mutex_unlock = _Xthr_zero_stub_
+#pragma weak condition_init = _Xthr_zero_stub_
+#pragma weak condition_clear = _Xthr_zero_stub_
+#pragma weak condition_wait = _Xthr_zero_stub_
+#pragma weak condition_signal = _Xthr_zero_stub_
+#pragma weak condition_broadcast = _Xthr_zero_stub_
+#else /* !CTHREADS */
+#if defined(SVR4) && !defined(__sgi)
+#include <thread.h>
+typedef thread_t xthread_t;
+#pragma weak thr_self = _Xthr_self_stub_
+#pragma weak mutex_init = _Xthr_zero_stub_
+#pragma weak mutex_destroy = _Xthr_zero_stub_
+#pragma weak mutex_lock = _Xthr_zero_stub_
+#pragma weak mutex_unlock = _Xthr_zero_stub_
+#pragma weak cond_init = _Xthr_zero_stub_
+#pragma weak cond_destroy = _Xthr_zero_stub_
+#pragma weak cond_wait = _Xthr_zero_stub_
+#pragma weak cond_signal = _Xthr_zero_stub_
+#pragma weak cond_broadcast = _Xthr_zero_stub_
+#else /* !SVR4 */
+#ifdef WIN32
+ /*
+ * Don't know what to do here. Is there something do be done at all?
+ */
+#else /* !WIN32 */
+#ifdef USE_TIS_SUPPORT
+#include <tis.h>
+typedef pthread_t xthread_t;
+#pragma weak tis_self = _Xthr_self_stub_
+#pragma weak tis_mutex_init = _Xthr_zero_stub_
+#pragma weak tis_mutex_destroy = _Xthr_zero_stub_
+#pragma weak tis_mutex_lock = _Xthr_zero_stub_
+#pragma weak tis_mutex_unlock = _Xthr_zero_stub_
+#pragma weak tis_cond_init = _Xthr_zero_stub_
+#pragma weak tis_cond_destroy = _Xthr_zero_stub_
+#pragma weak tis_cond_wait = _Xthr_zero_stub_
+#pragma weak tis_cond_signal = _Xthr_zero_stub_
+#pragma weak tis_cond_broadcast = _Xthr_zero_stub_
+#else
+#include <pthread.h>
+typedef pthread_t xthread_t;
+#if __GNUC__ >= 3
+xthread_t pthread_self() __attribute__ ((weak, alias ("_Xthr_self_stub_")));
+int pthread_mutex_init() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_mutex_destroy() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_mutex_lock() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_mutex_unlock() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_init() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_destroy() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_wait() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_signal() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_broadcast() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_key_create() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+void *pthread_getspecific() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_setspecific() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+#else /* __GNUC__ */
+#pragma weak pthread_self = _Xthr_self_stub_
+#pragma weak pthread_mutex_init = _Xthr_zero_stub_
+#pragma weak pthread_mutex_destroy = _Xthr_zero_stub_
+#pragma weak pthread_mutex_lock = _Xthr_zero_stub_
+#pragma weak pthread_mutex_unlock = _Xthr_zero_stub_
+#pragma weak pthread_cond_init = _Xthr_zero_stub_
+#pragma weak pthread_cond_destroy = _Xthr_zero_stub_
+#pragma weak pthread_cond_wait = _Xthr_zero_stub_
+#pragma weak pthread_cond_signal = _Xthr_zero_stub_
+#pragma weak pthread_cond_broadcast = _Xthr_zero_stub_
+/* These are added for libGL */
+#pragma weak pthread_key_create = _Xthr_zero_stub_
+#pragma weak pthread_getspecific = _Xthr_zero_stub_
+#pragma weak pthread_setspecific = _Xthr_zero_stub_
+#endif /* __GNUC__ */
+#if defined(_DECTHREADS_) || defined(linux)
+#pragma weak pthread_equal = _Xthr_equal_stub_ /* See Xthreads.h! */
+int
+_Xthr_equal_stub_()
+{
+ return(1);
+}
+#endif /* _DECTHREADS_ || linux */
+#endif /* USE_TIS_SUPPORT */
+#endif /* WIN32 */
+#endif /* SVR4 */
+#endif /* CTHREADS */
+
+static xthread_t
+_Xthr_self_stub_()
+{
+ static xthread_t _X_no_thread_id;
+
+ return(_X_no_thread_id); /* defined by <X11/Xthreads.h> */
+}
+
+static int
+_Xthr_zero_stub_()
+{
+ return(0);
+}
diff --git a/src/UndefCurs.c b/src/UndefCurs.c
index 46236ea4..8db1db74 100644
--- a/src/UndefCurs.c
+++ b/src/UndefCurs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UndefCurs.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUndefineCursor (dpy,w)
register Display *dpy;
Window w;
diff --git a/src/UngrabBut.c b/src/UngrabBut.c
index e0e28a3a..8ad44edb 100644
--- a/src/UngrabBut.c
+++ b/src/UngrabBut.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UngrabBut.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUngrabButton(dpy, button, modifiers, grab_window)
register Display *dpy;
unsigned int button; /* CARD8 */
diff --git a/src/UngrabKbd.c b/src/UngrabKbd.c
index 5a9d7562..1a298f50 100644
--- a/src/UngrabKbd.c
+++ b/src/UngrabKbd.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UngrabKbd.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUngrabKeyboard (dpy, time)
register Display *dpy;
Time time;
diff --git a/src/UngrabKey.c b/src/UngrabKey.c
index bfd28c0f..3489c754 100644
--- a/src/UngrabKey.c
+++ b/src/UngrabKey.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UngrabKey.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUngrabKey(dpy, key, modifiers, grab_window)
register Display *dpy;
int key;
diff --git a/src/UngrabPtr.c b/src/UngrabPtr.c
index 4cf09cf1..11da4e3c 100644
--- a/src/UngrabPtr.c
+++ b/src/UngrabPtr.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UngrabPtr.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUngrabPointer(dpy, time)
register Display *dpy;
Time time;
diff --git a/src/UngrabSvr.c b/src/UngrabSvr.c
index e5267e18..f084fcd6 100644
--- a/src/UngrabSvr.c
+++ b/src/UngrabSvr.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UngrabSvr.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUngrabServer (dpy)
register Display *dpy;
{
diff --git a/src/UninsCmap.c b/src/UninsCmap.c
index 6b06c670..c3ed9a49 100644
--- a/src/UninsCmap.c
+++ b/src/UninsCmap.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UninsCmap.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUninstallColormap(dpy, cmap)
register Display *dpy;
Colormap cmap;
diff --git a/src/UnldFont.c b/src/UnldFont.c
index 66f31a96..e465ca77 100644
--- a/src/UnldFont.c
+++ b/src/UnldFont.c
@@ -1,4 +1,4 @@
- /* $Xorg: UnldFont.c,v 1.4 2001/02/09 02:03:37 xorgcvs Exp $
+/* $Xorg: UnldFont.c,v 1.4 2001/02/09 02:03:37 xorgcvs Exp $ */
/*
Copyright 1986, 1998 The Open Group
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UnldFont.c,v 1.6 2001/12/19 15:37:57 tsi Exp $ */
#include "Xlibint.h"
+int
XUnloadFont(dpy, font)
register Display *dpy;
Font font;
diff --git a/src/UnmapSubs.c b/src/UnmapSubs.c
index bb7158ea..785a8833 100644
--- a/src/UnmapSubs.c
+++ b/src/UnmapSubs.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UnmapSubs.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUnmapSubwindows(dpy, win)
register Display *dpy;
Window win;
diff --git a/src/UnmapWin.c b/src/UnmapWin.c
index d536ecb0..e10462e1 100644
--- a/src/UnmapWin.c
+++ b/src/UnmapWin.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/UnmapWin.c,v 1.4 2001/12/14 19:54:07 dawes Exp $ */
#include "Xlibint.h"
+int
XUnmapWindow (dpy, w)
register Display *dpy;
Window w;
diff --git a/src/WMProps.c b/src/WMProps.c
index c1ed9a9d..ddd4d6f5 100644
--- a/src/WMProps.c
+++ b/src/WMProps.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/WMProps.c,v 3.7 2002/05/31 18:45:41 dawes Exp $ */
/***********************************************************
Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
@@ -55,10 +56,8 @@ SOFTWARE.
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
+#include <X11/Xlocale.h>
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
/*
* XSetWMProperties sets the following properties:
@@ -86,6 +85,7 @@ void XSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
XTextProperty textprop;
char hostName[256];
int len = _XGetHostname (hostName, sizeof hostName);
+ char *locale;
/* set names of window and icon */
if (windowName) XSetWMName (dpy, w, windowName);
@@ -121,6 +121,14 @@ void XSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
* systems will have to change this.
*/
char *cp = strrchr (argv[0], '/');
+#ifdef __UNIXOS2__
+ char *os2_cp = strrchr (argv[0],'\\');
+ char *dot_cp = strrchr (argv[0],'.');
+ if (os2_cp && (os2_cp > cp)) {
+ if(dot_cp && (dot_cp > os2_cp)) *dot_cp = '\0';
+ cp=os2_cp;
+ }
+#endif
tmp.res_name = (cp ? cp + 1 : argv[0]);
}
tmp.res_class = classHints->res_class;
@@ -128,5 +136,11 @@ void XSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
}
XSetClassHint (dpy, w, classHints);
}
+
+ locale = setlocale(LC_CTYPE, (char *)NULL);
+ if (locale)
+ XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
+ XA_STRING, 8, PropModeReplace,
+ (unsigned char *)locale, strlen(locale));
}
diff --git a/src/WarpPtr.c b/src/WarpPtr.c
index e3dfc8da..f14935b7 100644
--- a/src/WarpPtr.c
+++ b/src/WarpPtr.c
@@ -24,9 +24,11 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/WarpPtr.c,v 1.4 2001/12/14 19:54:08 dawes Exp $ */
#include "Xlibint.h"
+int
XWarpPointer(dpy, src_win, dest_win, src_x, src_y, src_width, src_height,
dest_x, dest_y)
register Display *dpy;
diff --git a/src/WinEvent.c b/src/WinEvent.c
index 726c7729..491e0553 100644
--- a/src/WinEvent.c
+++ b/src/WinEvent.c
@@ -24,17 +24,12 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/WinEvent.c,v 3.6 2001/12/14 19:54:08 dawes Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-extern long Const _Xevent_to_mask[];
+extern long const _Xevent_to_mask[];
#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
Button4MotionMask|Button5MotionMask)
@@ -47,6 +42,7 @@ extern long Const _Xevent_to_mask[];
* matches.
*/
+int
XWindowEvent (dpy, w, mask, event)
register Display *dpy;
Window w; /* Selected window. */
@@ -54,7 +50,7 @@ XWindowEvent (dpy, w, mask, event)
register XEvent *event; /* XEvent to be filled in. */
{
register _XQEvent *prev, *qelt;
- unsigned long qe_serial;
+ unsigned long qe_serial = 0;
LockDisplay(dpy);
prev = NULL;
diff --git a/src/Window.c b/src/Window.c
index 5d1f0afe..b48b1910 100644
--- a/src/Window.c
+++ b/src/Window.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Window.c,v 1.4 2001/12/14 19:54:08 dawes Exp $ */
#include "Xlibint.h"
@@ -126,7 +127,7 @@ Window XCreateWindow(dpy, parent, x, y, width, height,
req->visual = visual->visualid;
wid = req->wid = XAllocID(dpy);
valuemask &= AllMaskBits;
- if ((req->mask = valuemask))
+ if ((req->mask = valuemask))
_XProcessWindowAttributes (dpy, (xChangeWindowAttributesReq *)req,
valuemask, attributes);
UnlockDisplay(dpy);
diff --git a/src/WrBitF.c b/src/WrBitF.c
index e8fad11d..5f155a27 100644
--- a/src/WrBitF.c
+++ b/src/WrBitF.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/WrBitF.c,v 3.5 2002/05/31 18:45:41 dawes Exp $ */
#include "Xlibint.h"
#include <X11/Xos.h>
@@ -111,6 +112,9 @@ int XWriteBitmapFile(display, filename, bitmap, width, height, x_hot, y_hot)
else
name++;
+#ifdef __UNIXOS2__
+ filename = (char*)__XOS2RedirRoot(filename);
+#endif
if (!(stream = fopen(filename, "w")))
return(BitmapOpenFailed);
diff --git a/src/XErrorDB b/src/XErrorDB
index 5996026c..246ae15c 100644
--- a/src/XErrorDB
+++ b/src/XErrorDB
@@ -1,7 +1,11 @@
! $Xorg: XErrorDB,v 1.3 2000/08/17 19:44:59 cpqbld Exp $
! Copyright 1993, 1995, 1998 The Open Group
-! All Rights Reserved.
+! Permission to use, copy, modify, distribute, and sell this software and its
+! documentation for any purpose is hereby granted without fee, provided that
+! the above copyright notice appear in all copies and that both that
+! copyright notice and this permission notice appear in supporting
+! documentation.
!
! The above copyright notice and this permission notice shall be
! included in all copies or substantial portions of the Software.
@@ -19,6 +23,8 @@
! other dealings in this Software without prior written authorization
! from The Open Group.
!
+! $XFree86: xc/lib/X11/XErrorDB,v 3.41 2002/12/22 00:46:50 dawes Exp $
+!
! these are used in XGetErrorMessage.
XlibMessage.XError: X Error of failed request
XlibMessage.MajorCode: Major opcode of failed request: %d
@@ -575,12 +581,20 @@ XRequest.XFree86-VidModeExtension.9: XF86VidModeValidateModeLine
XRequest.XFree86-VidModeExtension.10: XF86VidModeSwitchToMode
XRequest.XFree86-VidModeExtension.11: XF86VidModeGetViewPort
XRequest.XFree86-VidModeExtension.12: XF86VidModeSetViewPort
+XRequest.XFree86-VidModeExtension.13: XF86VidModeGetDotClocks
+XRequest.XFree86-VidModeExtension.14: XF86VidModeSetClientVersion
+XRequest.XFree86-VidModeExtension.15: XF86VidModeSetGamma
+XRequest.XFree86-VidModeExtension.16: XF86VidModeGetGamma
+XRequest.XFree86-VidModeExtension.17: XF86VidModeGetGammaRamp
+XRequest.XFree86-VidModeExtension.18: XF86VidModeSetGammaRamp
+XRequest.XFree86-VidModeExtension.19: XF86VidModeGetGammaRampSize
+XRequest.XFree86-VidModeExtension.20: XF86VidModeGetPermissions
XProtoError.XFree86-VidModeExtension.0: XF86VidModeBadClock
XProtoError.XFree86-VidModeExtension.1: XF86VidModeBadHTimings
XProtoError.XFree86-VidModeExtension.2: XF86VidModeBadVTimings
XProtoError.XFree86-VidModeExtension.3: XF86VidModeModeUnsuitable
-XProtoError.XFree86-VidModeExtension.4: XF86VidModeClientNotLocal
-XProtoError.XFree86-VidModeExtension.5: XF86VidModeExtensionDisabled
+XProtoError.XFree86-VidModeExtension.4: XF86VidModeExtensionDisabled
+XProtoError.XFree86-VidModeExtension.5: XF86VidModeClientNotLocal
XProtoError.XFree86-VidModeExtension.6: XF86VidModeZoomLocked
! XFree86-Misc -- not an X Consortium standard
XRequest.XFree86-Misc.0: XF86MiscQueryVersion
@@ -590,6 +604,9 @@ XRequest.XFree86-Misc.3: XF86MiscGetMouseSettings
XRequest.XFree86-Misc.4: XF86MiscGetKbdSettings
XRequest.XFree86-Misc.5: XF86MiscSetMouseSettings
XRequest.XFree86-Misc.6: XF86MiscSetKbdSettings
+XRequest.XFree86-Misc.7: XF86MiscSetGrabKeysState
+XRequest.XFree86-Misc.8: XF86MiscSetClientVersion
+XRequest.XFree86-Misc.9: XF86MiscGetFilePaths
XProtoError.XFree86-Misc.0: XF86MiscBadMouseProtocol
XProtoError.XFree86-Misc.1: XF86MiscBadMouseBaudRate
XProtoError.XFree86-Misc.2: XF86MiscBadMouseFlags
@@ -597,8 +614,9 @@ XProtoError.XFree86-Misc.3: XF86MiscBadMouseCombo
XProtoError.XFree86-Misc.4: XF86MiscBadKbdType
XProtoError.XFree86-Misc.5: XF86MiscModInDevDisabled
XProtoError.XFree86-Misc.6: XF86MiscModInDevClientNotLocal
+XProtoError.XFree86-Misc.7: XF86MiscNoModule
! XFree86-DGA -- not an X Consortium standard
-XRequest.XFree86-DGA.0: XF86DGAQueryVersion
+XRequest.XFree86-DGA.0: XDGAQueryVersion
XRequest.XFree86-DGA.1: XF86DGAGetVideoLL
XRequest.XFree86-DGA.2: XF86DGADirectVideo
XRequest.XFree86-DGA.3: XF86DGAGetViewPortSize
@@ -608,10 +626,28 @@ XRequest.XFree86-DGA.6: XF86DGASetVidPage
XRequest.XFree86-DGA.7: XF86DGAInstallColormap
XRequest.XFree86-DGA.8: XF86DGAQueryDirectVideo
XRequest.XFree86-DGA.9: XF86DGAViewPortChanged
+XRequest.XFree86-DGA.10: XF86DGAObsolete1
+XRequest.XFree86-DGA.11: XF86DGAObsolete2
+XRequest.XFree86-DGA.12: XDGAQueryModes
+XRequest.XFree86-DGA.13: XDGASetMode
+XRequest.XFree86-DGA.14: XDGASetViewport
+XRequest.XFree86-DGA.15: XDGAInstallColormap
+XRequest.XFree86-DGA.16: XDGASelectInput
+XRequest.XFree86-DGA.17: XDGAFillRectangle
+XRequest.XFree86-DGA.18: XDGACopyArea
+XRequest.XFree86-DGA.19: XDGACopyTransparentArea
+XRequest.XFree86-DGA.20: XDGAGetViewportStatus
+XRequest.XFree86-DGA.21: XDGASync
+XRequest.XFree86-DGA.22: XDGAOpenFramebuffer
+XRequest.XFree86-DGA.23: XDGACloseFramebuffer
+XRequest.XFree86-DGA.24: XDGASetClientVersion
+XRequest.XFree86-DGA.25: XDGAChangePixmapMode
+XRequest.XFree86-DGA.26: XDGACreateColormap
XProtoError.XFree86-DGA.0: XF86DGAClientNotLocal
XProtoError.XFree86-DGA.1: XF86DGANoDirectVideoMode
XProtoError.XFree86-DGA.2: XF86DGAScreenNotActive
XProtoError.XFree86-DGA.3: XF86DGADirectNotActivated
+XProtoError.XFree86-DGA.4: XF86DGAOperationNotSupported
! DOUBLE-BUFFER (DBE), an X Consortium standard
XRequest.DOUBLE-BUFFER.0: DBEGetVersion
XRequest.DOUBLE-BUFFER.1: DBEAllocateBackBufferName
@@ -735,3 +771,115 @@ XRequest.XINERAMA.0: XINERAMAQueryVersion
XRequest.XINERAMA.1: XINERAMAGetState
XRequest.XINERAMA.2: XINERAMAGetScreenCount
XRequest.XINERAMA.3: XINERAMAGetScreenSize
+XRequest.XINERAMA.4: XINERAMAIsActive
+XRequest.XINERAMA.5: XINERAMAQueryScreens
+! XF86Rush extension, not a standard spec
+Xrequest.XFree86-Rush.0: XF86RushQueryVersion
+Xrequest.XFree86-Rush.1: XF86RushLockPixmap
+Xrequest.XFree86-Rush.2: XF86RushUnlockPixmap
+Xrequest.XFree86-Rush.3: XF86RushUnlockAllPixmaps
+Xrequest.XFree86-Rush.4: XF86RushGetCopyMode
+Xrequest.XFree86-Rush.5: XF86RushSetCopyMode
+Xrequest.XFree86-Rush.6: XF86RushGetPixelStride
+Xrequest.XFree86-Rush.7: XF86RushSetPixelStride
+Xrequest.XFree86-Rush.8: XF86RushOverlayPixmap
+Xrequest.XFree86-Rush.9: XF86RushStatusRegOffset
+Xrequest.XFree86-Rush.10: XF86RushAT3DEnableRegs
+Xrequest.XFree86-Rush.11: XF86RushAT3DDisableRegs
+! XVideo
+Xrequest.XVideo.0: XvQueryExtension
+Xrequest.XVideo.1: XvQueryAdaptors
+Xrequest.XVideo.2: XvQueryEncodings
+Xrequest.XVideo.3: XvGrabPort
+Xrequest.XVideo.4: XvUngrabPort
+Xrequest.XVideo.5: XvPutVideo
+Xrequest.XVideo.6: XvPutStill
+Xrequest.XVideo.7: XvGetVideo
+Xrequest.XVideo.8: XvGetStill
+Xrequest.XVideo.9: XvStopVideo
+Xrequest.XVideo.10: XvSelectVideoNotify
+Xrequest.XVideo.11: XvSelectPortNotify
+Xrequest.XVideo.12: XvQueryBestSize
+Xrequest.XVideo.13: XvSetPortAttribute
+Xrequest.XVideo.14: XvGetPortAttribute
+Xrequest.XVideo.15: XvQueryPortAttributes
+Xrequest.XVideo.16: XvListImageFormats
+Xrequest.XVideo.17: XvQueryImageAttributes
+Xrequest.XVideo.18: XvPutImage
+Xrequest.XVideo.19: XvShmPutImage
+XProtoError.XVideo.0: XvBadPort
+XProtoError.XVideo.1: XvBadEncoding
+XProtoError.XVideo.2: XvBadControl
+! XFree86-Bigfont
+Xrequest.XFree86-Bigfont.0: XF86BigfontQueryVersion
+Xrequest.XFree86-Bigfont.1: XF86BigfontQueryFont
+! Adobe-DPS-Extension, not a standard
+XRequest.Adobe-DPS-Extension.1: PSInit
+XRequest.Adobe-DPS-Extension.2: PSCreateContext
+XRequest.Adobe-DPS-Extension.3: PSCreateSpace
+XRequest.Adobe-DPS-Extension.4: PSGiveInput
+XRequest.Adobe-DPS-Extension.5: PSGetStatus
+XRequest.Adobe-DPS-Extension.6: PSDestroySpace
+XRequest.Adobe-DPS-Extension.7: PSReset
+XRequest.Adobe-DPS-Extension.8: PSNotifyContext
+XRequest.Adobe-DPS-Extension.9: PSCreateContextFromID
+XRequest.Adobe-DPS-Extension.10: PSXIDFromContext
+XRequest.Adobe-DPS-Extension.11: PSContextFromXID
+XRequest.Adobe-DPS-Extension.12: PSSetStatusMask
+XRequest.Adobe-DPS-Extension.13: PSCreateSecureContext
+XRequest.Adobe-DPS-Extension.14: PSNotifyWhenReady
+XProtoError.Adobe-DPS-Extension.0: PSErrorBadContext (invalid Context parameter)
+XlibMessage.Adobe-DPS-Extension.0: Context id in failed request: 0x%lx
+XProtoError.Adobe-DPS-Extension.1: PSErrorBadSpace (invalid Space parameter)
+XlibMessage.Adobe-DPS-Extension.1: Space id in failed request: 0x%lx
+XProtoError.Adobe-DPS-Extension.2: PSErrorAbort (interpreter aborted)
+XlibMessage.Adobe-DPS-Extension.2: Value in failed request: 0x%lx
+! RANDR
+XRequest.RANDR.0: RRQueryVersion
+XRequest.RANDR.1: RROldGetScreenInfo
+XRequest.RANDR.2: RRSetScreenConfig
+XRequest.RANDR.3: RROldScreenChangeSelectInput
+XRequest.RANDR.4: RRSelectInput
+XRequest.RANDR.5: RRGetScreenInfo
+! RENDER
+XRequest.RENDER.0: RenderQueryVersion
+XRequest.RENDER.1: RenderQueryPictFormats
+XRequest.RENDER.2: RenderQueryPictIndexValues
+XRequest.RENDER.3: RenderQueryDithers
+XRequest.RENDER.4: RenderCreatePicture
+XRequest.RENDER.5: RenderChangePicture
+XRequest.RENDER.6: RenderSetPictureClipRectangles
+XRequest.RENDER.7: RenderFreePicture
+XRequest.RENDER.8: RenderComposite
+XRequest.RENDER.9: RenderScale
+XRequest.RENDER.10: RenderTrapezoids
+XRequest.RENDER.11: RenderTriangles
+XRequest.RENDER.12: RenderTriStrip
+XRequest.RENDER.13: RenderTriFan
+XRequest.RENDER.14: RenderColorTrapezoids
+XRequest.RENDER.15: RenderColorTriangles
+XRequest.RENDER.16: RenderTransform
+XRequest.RENDER.17: RenderCreateGlyphSet
+XRequest.RENDER.18: RenderReferenceGlyphSet
+XRequest.RENDER.19: RenderFreeGlyphSet
+XRequest.RENDER.20: RenderAddGlyphs
+XRequest.RENDER.21: RenderAddGlyphsFromPicture
+XRequest.RENDER.22: RenderFreeGlyphs
+XRequest.RENDER.23: RenderCompositeGlyphs8
+XRequest.RENDER.24: RenderCompositeGlyphs16
+XRequest.RENDER.25: RenderCompositeGlyphs32
+XRequest.RENDER.26: RenderFillRectangles
+XRequest.RENDER.27: RenderCreateCursor
+XRequest.RENDER.28: RenderSetPictureTransform
+XRequest.RENDER.29: RenderQueryFilters
+XRequest.RENDER.30: RenderSetPictureFilter
+XProtoError.RENDER.0: RenderBadFormat (invalid PictFormat parameter)
+XlibMessage.RENDER.0: PictFormat id in failed request: 0x%lx
+XProtoError.RENDER.1: RenderBadPicture (invalid Picture parameter)
+XlibMessage.RENDER.1: Picture id in failed request: 0x%lx
+XProtoError.RENDER.2: RenderBadPictOp (invalid PictOp parameter)
+XlibMessage.RENDER.2: PictOp in failed request: 0x%lx
+XProtoError.RENDER.3: RenderBadGlyphSet (invalid GlyphSet parameter)
+XlibMessage.RENDER.3: GlyphSet id in failed request: 0x%lx
+XProtoError.RENDER.4: RenderBadGlyph (invalid Glyph parameter)
+XlibMessage.RENDER.4: Glyph in failed request: 0x%lx
diff --git a/src/XKeysymDB b/src/XKeysymDB
index 70575cec..0a259851 100644
--- a/src/XKeysymDB
+++ b/src/XKeysymDB
@@ -10,6 +10,8 @@
! written prior permission. M.I.T. makes no representations about the
! suitability of this software for any purpose. It is provided "as is"
! without express or implied warranty.
+!
+! $XFree86: xc/lib/X11/XKeysymDB,v 3.17 2003/02/14 22:02:26 dawes Exp $
hpmute_acute :100000A8
hpmute_grave :100000A9
@@ -195,7 +197,153 @@ XeroxPointerButton3 :10070003
XeroxPointerButton4 :10070004
XeroxPointerButton5 :10070005
+! The definitions here should match <X11/XF86keysym.h>
XF86ModeLock :1008FF01
+XF86Standby :1008FF10
+XF86AudioLowerVolume :1008FF11
+XF86AudioMute :1008FF12
+XF86AudioRaiseVolume :1008FF13
+XF86AudioPlay :1008FF14
+XF86AudioStop :1008FF15
+XF86AudioPrev :1008FF16
+XF86AudioNext :1008FF17
+XF86HomePage :1008FF18
+XF86Mail :1008FF19
+XF86Start :1008FF1A
+XF86Search :1008FF1B
+XF86AudioRecord :1008FF1C
+XF86Calculator :1008FF1D
+XF86Memo :1008FF1E
+XF86ToDoList :1008FF1F
+XF86Calendar :1008FF20
+XF86PowerDown :1008FF21
+XF86ContrastAdjust :1008FF22
+XF86RockerUp :1008FF23
+XF86RockerDown :1008FF24
+XF86RockerEnter :1008FF25
+XF86Back :1008FF26
+XF86Forward :1008FF27
+XF86Stop :1008FF28
+XF86Refresh :1008FF29
+XF86PowerOff :1008FF2A
+XF86WakeUp :1008FF2B
+XF86Eject :1008FF2C
+XF86ScreenSaver :1008FF2D
+XF86WWW :1008FF2E
+XF86Sleep :1008FF2F
+XF86Favorites :1008FF30
+XF86AudioPause :1008FF31
+XF86AudioMedia :1008FF32
+XF86MyComputer :1008FF33
+XF86VendorHome :1008FF34
+XF86LightBulb :1008FF35
+XF86Shop :1008FF36
+XF86History :1008FF37
+XF86OpenURL :1008FF38
+XF86AddFavorite :1008FF39
+XF86HotLinks :1008FF3A
+XF86BrightnessAdjust :1008FF3B
+XF86Finance :1008FF3C
+XF86Community :1008FF3D
+XF86AudioRewind :1008FF3E
+XF86BackForward :1008FF3F
+XF86Launch0 :1008FF40
+XF86Launch1 :1008FF41
+XF86Launch2 :1008FF42
+XF86Launch3 :1008FF43
+XF86Launch4 :1008FF44
+XF86Launch5 :1008FF45
+XF86Launch6 :1008FF46
+XF86Launch7 :1008FF47
+XF86Launch8 :1008FF48
+XF86Launch9 :1008FF49
+XF86LaunchA :1008FF4A
+XF86LaunchB :1008FF4B
+XF86LaunchC :1008FF4C
+XF86LaunchD :1008FF4D
+XF86LaunchE :1008FF4E
+XF86LaunchF :1008FF4F
+XF86ApplicationLeft :1008FF50
+XF86ApplicationRight :1008FF51
+XF86Book :1008FF52
+XF86CD :1008FF53
+XF86Calculater :1008FF54
+XF86Clear :1008FF55
+XF86Close :1008FF56
+XF86Copy :1008FF57
+XF86Cut :1008FF58
+XF86Display :1008FF59
+XF86DOS :1008FF5A
+XF86Documents :1008FF5B
+XF86Excel :1008FF5C
+XF86Explorer :1008FF5D
+XF86Game :1008FF5E
+XF86Go :1008FF5F
+XF86iTouch :1008FF60
+XF86LogOff :1008FF61
+XF86Market :1008FF62
+XF86Meeting :1008FF63
+XF86MenuKB :1008FF65
+XF86MenuPB :1008FF66
+XF86MySites :1008FF67
+XF86New :1008FF68
+XF86News :1008FF69
+XF86OfficeHome :1008FF6A
+XF86Open :1008FF6B
+XF86Option :1008FF6C
+XF86Paste :1008FF6D
+XF86Phone :1008FF6E
+XF86Q :1008FF70
+XF86Reply :1008FF72
+XF86Reload :1008FF73
+XF86RotateWindows :1008FF74
+XF86RotationPB :1008FF75
+XF86RotationKB :1008FF76
+XF86Save :1008FF77
+XF86ScrollUp :1008FF78
+XF86ScrollDown :1008FF79
+XF86ScrollClick :1008FF7A
+XF86Send :1008FF7B
+XF86Spell :1008FF7C
+XF86SplitScreen :1008FF7D
+XF86Support :1008FF7E
+XF86TaskPane :1008FF7F
+XF86Terminal :1008FF80
+XF86Tools :1008FF81
+XF86Travel :1008FF82
+XF86UserPB :1008FF84
+XF86User1KB :1008FF85
+XF86User2KB :1008FF86
+XF86Video :1008FF87
+XF86WheelButton :1008FF88
+XF86Word :1008FF89
+XF86Xfer :1008FF8A
+XF86ZoomIn :1008FF8B
+XF86ZoomOut :1008FF8C
+XF86Away :1008FF8D
+XF86Messenger :1008FF8E
+XF86WebCam :1008FF8F
+XF86MailForward :1008FF90
+XF86Pictures :1008FF91
+XF86Music :1008FF92
+
+! XFree86 special action keys
+XF86_Switch_VT_1 :1008FE01
+XF86_Switch_VT_2 :1008FE02
+XF86_Switch_VT_3 :1008FE03
+XF86_Switch_VT_4 :1008FE04
+XF86_Switch_VT_5 :1008FE05
+XF86_Switch_VT_6 :1008FE06
+XF86_Switch_VT_7 :1008FE07
+XF86_Switch_VT_8 :1008FE08
+XF86_Switch_VT_9 :1008FE09
+XF86_Switch_VT_10 :1008FE0A
+XF86_Switch_VT_11 :1008FE0B
+XF86_Switch_VT_12 :1008FE0C
+XF86_Ungrab :1008FE20
+XF86_ClearGrab :1008FE21
+XF86_Next_VMode :1008FE22
+XF86_Prev_VMode :1008FE23
usldead_acute :100000A8
usldead_grave :100000A9
diff --git a/src/Xintatom.h b/src/Xintatom.h
new file mode 100644
index 00000000..910c0fa2
--- /dev/null
+++ b/src/Xintatom.h
@@ -0,0 +1,33 @@
+/* $XFree86: xc/lib/X11/Xintatom.h,v 1.1 2001/08/18 02:41:28 dawes Exp $ */
+
+#ifndef _XINTATOM_H_
+#define _XINTATOM_H_ 1
+
+#include <X11/Xfuncproto.h>
+
+/* IntAtom.c */
+
+#define TABLESIZE 64
+
+typedef struct _Entry {
+ unsigned long sig;
+ Atom atom;
+} EntryRec, *Entry;
+
+#define RESERVED ((Entry) 1)
+
+#define EntryName(e) ((char *)(e+1))
+
+typedef struct _XDisplayAtoms {
+ Entry table[TABLESIZE];
+} AtomTable;
+
+_XFUNCPROTOBEGIN
+
+extern void _XUpdateAtomCache(Display *dpy, const char *name, Atom atom,
+ unsigned long sig, int idx, int n);
+extern void _XFreeAtomTable(Display *dpy);
+
+_XFUNCPROTOEND
+
+#endif /* _XINTATOM_H_ */
diff --git a/src/Xintconn.h b/src/Xintconn.h
new file mode 100644
index 00000000..3010da4f
--- /dev/null
+++ b/src/Xintconn.h
@@ -0,0 +1,27 @@
+/* $XFree86: xc/lib/X11/Xintconn.h,v 1.1 2001/08/18 02:41:28 dawes Exp $ */
+
+#ifndef _XINTCONN_H_
+#define _XINTCONN_H_ 1
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+/* ConnDis.c */
+
+extern int _XDisconnectDisplay(XtransConnInfo trans_conn);
+extern Bool _XSendClientPrefix(Display *dpy, xConnClientPrefix *client,
+ char *auth_proto, char *auth_string,
+ xConnSetupPrefix *prefix);
+extern XtransConnInfo _X11TransConnectDisplay(char *display_name,
+ char **fullnamep, int *dpynump,
+ int *screenp, char **auth_namep,
+ int *auth_namelenp, char **auth_datap,
+ int *auth_datalenp);
+
+/* OpenDis.c */
+extern void _XFreeDisplayStructure(Display *dpy);
+
+_XFUNCPROTOEND
+
+#endif /* _XINTCONN_H_ */
diff --git a/src/XlibInt.c b/src/XlibInt.c
index a14cb333..689112c5 100644
--- a/src/XlibInt.c
+++ b/src/XlibInt.c
@@ -1,7 +1,7 @@
-/* $Xorg: XlibInt.c,v 1.10 2001/02/20 02:13:26 coskrey Exp $ */
+/* $Xorg: XlibInt.c,v 1.8 2001/02/09 02:03:38 xorgcvs Exp $ */
/*
-Copyright 1985, 1986, 1987, 1998, 2001 The Open Group
+Copyright 1985, 1986, 1987, 1998 The Open Group
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/XlibInt.c,v 3.34 2003/02/18 05:15:27 dawes Exp $ */
/*
* XlibInt.c - Internal support routines for the C subroutine
@@ -33,13 +34,11 @@ from The Open Group.
*/
#define NEED_EVENTS
#define NEED_REPLIES
-
-#define GENERIC_LENGTH_LIMIT (1 << 29)
#include "Xlibint.h"
#include <X11/Xpoll.h>
#include <X11/Xtrans.h>
-#include "xcmiscstr.h"
+#include <X11/extensions/xcmiscstr.h>
#include <stdio.h>
#ifdef XTHREADS
@@ -86,6 +85,9 @@ xthread_t (*_Xthread_self_fn)() = NULL;
#ifdef WIN32
#define ETEST() (WSAGetLastError() == WSAEWOULDBLOCK)
#else
+#ifdef __CYGWIN__ /* Cygwin uses ENOBUFS to signal socket is full */
+#define ETEST() (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOBUFS)
+#else
#if defined(EAGAIN) && defined(EWOULDBLOCK)
#define ETEST() (errno == EAGAIN || errno == EWOULDBLOCK)
#else
@@ -93,16 +95,27 @@ xthread_t (*_Xthread_self_fn)() = NULL;
#define ETEST() (errno == EAGAIN)
#else
#define ETEST() (errno == EWOULDBLOCK)
-#endif
-#endif
-#endif
+#endif /* EAGAIN */
+#endif /* EAGAIN && EWOULDBLOCK */
+#endif /* __CYGWIN__ */
+#endif /* WIN32 */
+
#ifdef WIN32
#define ECHECK(err) (WSAGetLastError() == err)
#define ESET(val) WSASetLastError(val)
#else
+#ifdef __UNIXOS2__
+#define ECHECK(err) (errno == err)
+#define ESET(val)
+#else
+#ifdef ISC
+#define ECHECK(err) ((errno == err) || ETEST())
+#else
#define ECHECK(err) (errno == err)
+#endif
#define ESET(val) errno = val
#endif
+#endif
#if defined(LOCALCONN) || defined(LACHMAN)
#ifdef EMSGSIZE
@@ -116,6 +129,12 @@ xthread_t (*_Xthread_self_fn)() = NULL;
#endif
#endif
+#ifdef __UNIXOS2__
+#define select(n,r,w,x,t) os2ClientSelect(n,r,w,x,t)
+#include <limits.h>
+#define MAX_PATH _POSIX_PATH_MAX
+#endif
+
#ifdef MUSTCOPY
#define STARTITERATE(tpvar,type,start,endcond) \
@@ -166,10 +185,6 @@ static void _XProcessInternalConnection();
* the object they have created.
*/
-static int padlength[4] = {0, 3, 2, 1};
- /* lookup table for adding padding bytes to data that is read from
- or written to the X socket. */
-
static xReq _dummy_request = {
0, 0, 0
};
@@ -410,8 +425,8 @@ _XWaitForReadable(dpy)
int result;
int fd = dpy->fd;
struct _XConnectionInfo *ilist;
- register int saved_event_serial;
- int in_read_events;
+ register int saved_event_serial = 0;
+ int in_read_events = 0;
register Bool did_proc_conni = False;
#ifdef USE_POLL
struct pollfd *filedes;
@@ -560,7 +575,6 @@ static void _XFlushInt (dpy, cv)
register Display *dpy;
register xcondition_t cv;
{
- char *nextindex;
#endif /* XTHREADS*/
register long size, todo;
register int write_stat;
@@ -581,7 +595,11 @@ static void _XFlushInt (dpy, cv)
#ifdef XTHREADS
while (dpy->flags & XlibDisplayWriting) {
- ConditionWait(dpy, dpy->lock->writers);
+ if (dpy->lock) {
+ ConditionWait(dpy, dpy->lock->writers);
+ } else {
+ _XWaitForWritable (dpy, cv);
+ }
}
#endif
size = todo = dpy->bufptr - dpy->buffer;
@@ -726,6 +744,7 @@ _XEventsQueued (dpy, mode)
*/
if (!pend && !dpy->qlen && ++dpy->conn_checker >= XCONN_CHECK_FREQ)
{
+ int result;
#ifdef USE_POLL
struct pollfd filedes;
#else
@@ -737,14 +756,14 @@ _XEventsQueued (dpy, mode)
#ifdef USE_POLL
filedes.fd = dpy->fd;
filedes.events = POLLIN;
- if ((pend = poll(&filedes, 1, 0)))
+ if ((result = poll(&filedes, 1, 0)))
#else
FD_ZERO(&r_mask);
FD_SET(dpy->fd, &r_mask);
- if ((pend = Select(dpy->fd + 1, &r_mask, NULL, NULL, &zero_time)))
+ if ((result = Select(dpy->fd + 1, &r_mask, NULL, NULL, &zero_time)))
#endif
{
- if (pend > 0)
+ if (result > 0)
{
if (_X11TransBytesReadable(dpy->trans_conn, &pend) < 0)
_XIOError(dpy);
@@ -752,14 +771,19 @@ _XEventsQueued (dpy, mode)
if (!pend)
pend = SIZEOF(xReply);
}
- else if (pend < 0 && !ECHECK(EINTR))
+ else if (result < 0 && !ECHECK(EINTR))
_XIOError(dpy);
}
}
#endif /* XCONN_CHECK_FREQ */
if (!(len = pend)) {
/* _XFlush can enqueue events */
- UnlockNextEventReader(dpy);
+#ifdef XTHREADS
+ if (cvl)
+#endif
+ {
+ UnlockNextEventReader(dpy);
+ }
return(dpy->qlen);
}
/* Force a read if there is not enough data. Otherwise,
@@ -803,7 +827,9 @@ _XEventsQueued (dpy, mode)
if (read_buf != (char *)dpy->lock->reply_awaiters->buf)
memcpy(dpy->lock->reply_awaiters->buf, read_buf,
len);
- UnlockNextEventReader(dpy);
+ if (cvl) {
+ UnlockNextEventReader(dpy);
+ }
return(dpy->qlen); /* we read, so we can return */
} else if (read_buf != buf.buf)
memcpy(buf.buf, read_buf, len);
@@ -827,7 +853,12 @@ _XEventsQueued (dpy, mode)
}
} ENDITERATE
- UnlockNextEventReader(dpy);
+#ifdef XTHREADS
+ if (cvl)
+#endif
+ {
+ UnlockNextEventReader(dpy);
+ }
return(dpy->qlen);
}
@@ -1216,7 +1247,7 @@ void _XReadPad (dpy, data, size)
* whatever is needed.
*/
- iov[1].iov_len = padlength[size & 3];
+ iov[1].iov_len = -size & 3;
iov[1].iov_base = pad;
size += iov[1].iov_len;
#ifdef XTHREADS
@@ -1287,7 +1318,7 @@ _XSend (dpy, data, size)
#endif
{
struct iovec iov[3];
- static char pad[3] = {0, 0, 0};
+ static char const pad[3] = {0, 0, 0};
/* XText8 and XText16 require that the padding bytes be zero! */
long skip, dbufsize, padsize, total, todo;
@@ -1300,7 +1331,7 @@ _XSend (dpy, data, size)
/* make sure no one else can put in data */
dpy->bufptr = dpy->bufmax;
#endif
- padsize = padlength[size & 3];
+ padsize = -size & 3;
for (ext = dpy->flushes; ext; ext = ext->next_flush) {
(*ext->before_flush)(dpy, &ext->codes, dpy->buffer, dbufsize);
(*ext->before_flush)(dpy, &ext->codes, (char *)data, size);
@@ -1355,7 +1386,7 @@ _XSend (dpy, data, size)
InsertIOV (dpy->buffer, dbufsize)
InsertIOV ((char *)data, size)
- InsertIOV (pad, padsize)
+ InsertIOV ((char *)pad, padsize)
ESET(0);
if ((len = _X11TransWritev(dpy->trans_conn, iov, i)) >= 0) {
@@ -1670,17 +1701,6 @@ _XReply (dpy, rep, extra, discard)
!= (char *)rep)
continue;
}
- /*
- * Don't accept ridiculously large values for
- * generic.length; doing so could cause stack-scribbling
- * problems elsewhere.
- */
- if (rep->generic.length > GENERIC_LENGTH_LIMIT) {
- rep->generic.length = GENERIC_LENGTH_LIMIT;
- (void) fprintf(stderr,
- "Xlib: suspiciously long reply length %d set to %d",
- rep->generic.length, GENERIC_LENGTH_LIMIT);
- }
if (extra <= rep->generic.length) {
if (extra > 0)
/*
@@ -1800,7 +1820,13 @@ _XAsyncReply(dpy, rep, buf, lenp, discard)
(void) _XSetLastRequestRead(dpy, &rep->generic);
len = SIZEOF(xReply) + (rep->generic.length << 2);
-
+ if (len < SIZEOF(xReply)) {
+ _XIOError (dpy);
+ buf += *lenp;
+ *lenp = 0;
+ return buf;
+ }
+
for (async = dpy->async_handlers; async; async = next) {
next = async->next;
if ((consumed = (*async->handler)(dpy, rep, buf, *lenp, async->data)))
@@ -1822,7 +1848,6 @@ _XAsyncReply(dpy, rep, buf, lenp, discard)
}
if (len < SIZEOF(xReply))
{
- ESET(EINVAL);
_XIOError (dpy);
buf += *lenp;
*lenp = 0;
@@ -1856,7 +1881,7 @@ _XAsyncReply(dpy, rep, buf, lenp, discard)
/*
* Support for internal connections, such as an IM might use.
- * By Stephen Gildea, The Open Group, September 1993
+ * By Stephen Gildea, X Consortium, September 1993
*/
/* _XRegisterInternalConnection
@@ -1952,7 +1977,8 @@ _XUnregisterInternalConnection(dpy, fd)
struct _XConnWatchInfo *watch;
XPointer *wd;
- for (prev = &dpy->im_fd_info; (info_list = *prev); prev = &info_list->next) {
+ for (prev = &dpy->im_fd_info; (info_list = *prev);
+ prev = &info_list->next) {
if (info_list->fd == fd) {
*prev = info_list->next;
dpy->im_fd_length--;
@@ -2671,19 +2697,6 @@ register xEvent *event; /* wire protocol event */
}
-#ifndef USL_SHARELIB
-
-static char *_SysErrorMsg (n)
- int n;
-{
- char *s = strerror(n);
-
- return (s ? s : "no such error");
-}
-
-#endif /* USL sharedlibs in don't define for SVR3.2 */
-
-
/*
* _XDefaultIOError - Default fatal system error reporting routine. Called
* when an X internal system error is encountered.
@@ -2701,7 +2714,7 @@ void _XDefaultIOError (dpy)
#ifdef WIN32
WSAGetLastError(), strerror(WSAGetLastError()),
#else
- errno, _SysErrorMsg (errno),
+ errno, strerror (errno),
#endif
DisplayString (dpy));
(void) fprintf (stderr,
@@ -2897,6 +2910,7 @@ int _XError (dpy, rep)
/*
* _XIOError - call user connection error handler and exit
*/
+int
_XIOError (dpy)
Display *dpy;
{
@@ -2910,6 +2924,7 @@ _XIOError (dpy)
else
_XDefaultIOError(dpy);
exit (1);
+ return 0;
}
@@ -2985,6 +3000,7 @@ Visual *_XVIDtoVisual (dpy, id)
return (NULL);
}
+int
#if NeedFunctionPrototypes
XFree (void *data)
#else
@@ -3030,6 +3046,7 @@ void Data (dpy, data, len)
#ifdef LONG64
+int
_XData32 (dpy, data, len)
Display *dpy;
register long *data;
@@ -3053,6 +3070,7 @@ _XData32 (dpy, data, len)
while (--i >= 0)
*buf++ = *data++;
}
+ return 0;
}
#endif /* LONG64 */
@@ -3182,7 +3200,7 @@ _XData32 (dpy, data, len)
* and so, you may be better off using gethostname (if it exists).
*/
-#if (defined(_POSIX_SOURCE) && !defined(AIXV3)) || defined(hpux) || defined(USG) || defined(SVR4)
+#if (defined(_POSIX_SOURCE) && !defined(AIXV3) && !defined(__QNX__)) || defined(hpux) || defined(USG) || defined(SVR4)
#define NEED_UTSNAME
#include <sys/utsname.h>
#endif
@@ -3246,23 +3264,7 @@ Screen *_XScreenOfWindow (dpy, w)
}
-#if (MSKCNT > 4)
-/*
- * This is a macro if MSKCNT <= 4
- */
-_XANYSET(src)
- long *src;
-{
- int i;
-
- for (i=0; i<MSKCNT; i++)
- if (src[ i ])
- return (1);
- return (0);
-}
-#endif
-
-#if defined(WIN32) || defined(__EMX__) /* || defined(OS2) */
+#if defined(WIN32)
/*
* These functions are intended to be used internally to Xlib only.
@@ -3310,7 +3312,7 @@ static int AccessFile (path, pathbuf, len_pathbuf, pathret)
/* try the places set in the environment */
drive = getenv ("_XBASEDRIVE");
-#ifdef __EMX__
+#ifdef __UNIXOS2__
if (!drive)
drive = getenv ("X11ROOT");
#endif
@@ -3326,7 +3328,7 @@ static int AccessFile (path, pathbuf, len_pathbuf, pathret)
return 1;
}
-#ifndef __EMX__
+#ifndef __UNIXOS2__
/* one last place to look */
drive = getenv ("HOMEDRIVE");
if (drive) {
@@ -3366,7 +3368,7 @@ static int AccessFile (path, pathbuf, len_pathbuf, pathret)
}
int _XOpenFile(path, flags)
- char* path;
+ _Xconst char* path;
int flags;
{
char buf[MAX_PATH];
@@ -3385,8 +3387,8 @@ int _XOpenFile(path, flags)
}
void* _XFopenFile(path, mode)
- char* path;
- char* mode;
+ _Xconst char* path;
+ _Xconst char* mode;
{
char buf[MAX_PATH];
char* bufp;
@@ -3404,7 +3406,7 @@ void* _XFopenFile(path, mode)
}
int _XAccessFile(path)
- char* path;
+ _Xconst char* path;
{
char buf[MAX_PATH];
char* bufp;
diff --git a/src/XomGeneric.h b/src/XomGeneric.h
index 10dea3b3..019d0115 100644
--- a/src/XomGeneric.h
+++ b/src/XomGeneric.h
@@ -31,6 +31,7 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/XomGeneric.h,v 1.4 2001/01/17 19:41:50 dawes Exp $ */
#ifndef _XOMGENERIC_H_
#define _XOMGENERIC_H_
@@ -59,7 +60,8 @@ typedef struct _VRotateRec {
typedef enum {
XOMMultiByte,
- XOMWideChar
+ XOMWideChar,
+ XOMUtf8String
} XOMTextType;
typedef struct _FontDataRec {
@@ -134,6 +136,7 @@ typedef struct _FontSetRec {
typedef struct _XOCGenericPart {
XlcConv mbs_to_cs;
XlcConv wcs_to_cs;
+ XlcConv utf8_to_cs;
int font_set_num;
FontSet font_set;
} XOCGenericPart;
diff --git a/src/Xrm.c b/src/Xrm.c
index 022dbe60..c7166246 100644
--- a/src/Xrm.c
+++ b/src/Xrm.c
@@ -49,6 +49,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Xrm.c,v 3.20 2002/05/31 18:45:42 dawes Exp $ */
#include <stdio.h>
#include <ctype.h>
@@ -61,16 +62,7 @@ from The Open Group.
#include "XrmI.h"
#include <X11/Xos.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-#if defined(__STDC__) && !defined(NORCONST)
-#define RConst const
-#else
-#define RConst /**/
-#endif
+extern XrmQuark _XrmInternalStringToQuark();
/*
@@ -294,10 +286,10 @@ typedef unsigned char XrmBits;
#define is_special(bits) ((bits) & (ENDOF|BSLASH))
/* parsing types */
-static XrmBits Const xrmtypes[256] = {
+static XrmBits const xrmtypes[256] = {
EOS,0,0,0,0,0,0,0,
0,SPACE,EOL,0,0,
-#if defined(WIN32) || defined(__EMX__) /* || defined(OS2) */
+#if defined(WIN32) || defined(__UNIXOS2__)
EOL, /* treat CR the same as LF, just in case */
#else
0,
@@ -451,37 +443,44 @@ static void PrintQuarkList(quarks, stream)
#endif /* DEBUG */
-/*ARGSUSED*/
-static void mbnoop(state)
- XPointer state;
+
+/*
+ * Fallback methods for Xrm parsing.
+ * Simulate a C locale. No state needed here.
+ */
+
+static void
+c_mbnoop(
+ XPointer state)
{
}
-/*ARGSUSED*/
-static char mbchar(state, str, lenp)
- XPointer state;
- char *str;
- int *lenp;
+static char
+c_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
{
*lenp = 1;
return *str;
}
-/*ARGSUSED*/
-static char *lcname(state)
- XPointer state;
+static const char *
+c_lcname(
+ XPointer state)
{
return "C";
}
-static RConst XrmMethodsRec mb_methods = {
- mbnoop,
- mbchar,
- mbnoop,
- lcname,
- mbnoop
+static const XrmMethodsRec mb_methods = {
+ c_mbnoop, /* mbinit */
+ c_mbchar, /* mbchar */
+ c_mbnoop, /* mbfinish */
+ c_lcname, /* lcname */
+ c_mbnoop /* destroy */
};
+
static XrmDatabase NewDatabase()
{
register XrmDatabase db;
@@ -491,9 +490,13 @@ static XrmDatabase NewDatabase()
_XCreateMutex(&db->linfo);
db->table = (NTable)NULL;
db->mbstate = (XPointer)NULL;
+#ifdef _XP_PRINT_SERVER_
+ db->methods = NULL;
+#else
db->methods = _XrmInitParseInfo(&db->mbstate);
+#endif
if (!db->methods)
- db->methods = (XrmMethods)&mb_methods;
+ db->methods = &mb_methods;
}
return db;
}
@@ -1590,6 +1593,10 @@ char * filename;
register int fd, size;
char * filebuf;
+#ifdef __UNIXOS2__
+ filename = __XOS2RedirRoot(filename);
+#endif
+
/*
* MS-Windows and OS/2 note: Default open mode includes O_TEXT
*/
@@ -1598,11 +1605,11 @@ char * filename;
/*
* MS-Windows and OS/2 note: depending on how the sources are
- * untarred, the newlines in resource files may or may not have
- * been * expanded to CRLF. Either way the size returned by fstat
- * is sufficient to read the file into because in text-mode any
- * CRLFs in a file will be converted to newlines (LF) with the
- * result that * the number of bytes actually read with be <=
+ * untarred, the newlines in resource files may or may not have
+ * been expanded to CRLF. Either way the size returned by fstat
+ * is sufficient to read the file into because in text-mode any
+ * CRLFs in a file will be converted to newlines (LF) with the
+ * result that the number of bytes actually read with be <=
* to the size returned by fstat.
*/
GetSizeOfFile(fd, size);
@@ -1613,6 +1620,17 @@ char * filename;
}
size = read (fd, filebuf, size);
+#ifdef __UNIXOS2__
+ { /* kill CRLF */
+ int i,k;
+ for (i=k=0; i<size; i++)
+ if (filebuf[i] != 0x0d) {
+ filebuf[k++] = filebuf[i];
+ }
+ filebuf[k] = 0;
+ }
+#endif
+
if (size < 0) {
close (fd);
Xfree(filebuf);
@@ -2301,7 +2319,7 @@ Bool XrmQGetSearchResource(searchList, name, class, pType, pValue)
{
register LTable *list;
register LTable table;
- register VEntry entry;
+ register VEntry entry = NULL;
int flags;
/* find tight or loose entry */
@@ -2636,10 +2654,11 @@ static void DestroyNTable(table)
Xfree((char *)table);
}
-char *XrmLocaleOfDatabase(db)
+const char *
+XrmLocaleOfDatabase(db)
XrmDatabase db;
{
- char* retval;
+ const char* retval;
_XLockMutex(&db->linfo);
retval = (*db->methods->lcname)(db->mbstate);
_XUnlockMutex(&db->linfo);
diff --git a/src/evtomask.c b/src/evtomask.c
index 80047503..0646a880 100644
--- a/src/evtomask.c
+++ b/src/evtomask.c
@@ -24,20 +24,15 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/evtomask.c,v 3.5 2001/12/14 19:54:10 dawes Exp $ */
#include <X11/X.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
/*
* This array can be used given an event type to determine the mask bits
* that could have generated it.
*/
-long Const _Xevent_to_mask [LASTEvent] = {
+long const _Xevent_to_mask [LASTEvent] = {
0, /* no event 0 */
0, /* no event 1 */
KeyPressMask, /* KeyPress */
diff --git a/src/globals.c b/src/globals.c
index aadfa878..266349ab 100644
--- a/src/globals.c
+++ b/src/globals.c
@@ -26,7 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
-
+/* $XFree86: xc/lib/X11/globals.c,v 3.5 2001/12/14 19:54:10 dawes Exp $ */
/*
*
@@ -53,7 +53,7 @@ from The Open Group.
/*
* If we need to define extra variables for each global
*/
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#if !defined(UNIXCPP) || defined(ANSICPP)
#define ZEROINIT(t,var,val) SetZero(t,var,val); \
SetZero (long, _libX_##var##Flag, 0); \
SetZero (void *, _libX_##var##Ptr, NULL)
diff --git a/src/imConv.c b/src/imConv.c
index e16fb4d2..339ba13c 100644
--- a/src/imConv.c
+++ b/src/imConv.c
@@ -1,4 +1,4 @@
-/* $Xorg: imConv.c,v 1.5 2000/08/17 19:45:11 cpqbld Exp $ */
+/* $TOG: imConv.c /main/20 1998/06/17 15:46:41 kaleb $ */
/******************************************************************
Copyright 1991, 1992 by Fuji Xerox Co.,Ltd.
@@ -31,6 +31,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
fujiwara@a80.tech.yk.fujitsu.co.jp
******************************************************************/
+/* 2000 Modifier: Ivan Pascal The XFree86 Project.
+ */
+/* $XFree86: xc/lib/X11/imConv.c,v 1.31 2001/02/09 00:02:53 dawes Exp $ */
#define NEED_EVENTS
#include <stdio.h>
@@ -38,8 +41,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "Xlcint.h"
#include "Ximint.h"
#include "XlcPubI.h"
-#define XK_PUBLISHING
-#include "X11/keysym.h"
#ifdef XKB
/*
@@ -53,699 +54,101 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define XLOOKUPSTRING XLookupString
#endif
-/* bit (1<<i) means character is in codeset i */
-unsigned int _Xlatin1[128] = {
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x990ee, 0x88000, 0x89000, 0x89084, 0x0902e, 0x89000, 0x09080, 0x9908e,
-0x0908e, 0x89080, 0x88000, 0x89080, 0x89080, 0x990ee, 0x89000, 0x89008,
-0x9908e, 0x89080, 0x89084, 0x89084, 0x0908e, 0x89004, 0x89000, 0x99084,
-0x0900c, 0x89000, 0x88000, 0x89080, 0x09000, 0x09084, 0x09000, 0x88000,
-0x88004, 0x9800e, 0x9800e, 0x98008, 0x9800e, 0x98008, 0x98008, 0x88006,
-0x88004, 0x9800e, 0x88004, 0x9800e, 0x88004, 0x9800e, 0x9800e, 0x98004,
-0x90000, 0x88004, 0x88004, 0x98006, 0x9800e, 0x98008, 0x9800e, 0x8800e,
-0x98008, 0x88004, 0x9800e, 0x9800c, 0x9800e, 0x90002, 0x90000, 0x9800e,
-0x88004, 0x9800e, 0x9800e, 0x98008, 0x9800e, 0x98008, 0x98008, 0x88004,
-0x88004, 0x9800e, 0x88004, 0x9800e, 0x88004, 0x9800e, 0x9800e, 0x98004,
-0x90000, 0x88004, 0x88004, 0x98006, 0x9800e, 0x98008, 0x9800e, 0x8800e,
-0x98008, 0x88004, 0x9800e, 0x9800c, 0x9800e, 0x90002, 0x90000, 0x88000
-};
-
-/* bit (1<<i) means character is in codeset i */
-unsigned int _Xlatin2[128] = {
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-0x1800c, 0x10008, 0x00004, 0x00000, 0x0800c, 0x00000, 0x00000, 0x1800c,
-0x0800c, 0x00008, 0x00004, 0x00000, 0x00000, 0x1800c, 0x00008, 0x00004,
-0x1800c, 0x10008, 0x00008, 0x00000, 0x0800c, 0x00000, 0x00000, 0x00008,
-0x0800c, 0x00008, 0x00004, 0x00000, 0x00000, 0x00000, 0x00008, 0x00004,
-0x00000, 0x1800c, 0x1800c, 0x00000, 0x1800c, 0x00000, 0x00000, 0x08004,
-0x10008, 0x1800c, 0x10008, 0x1800c, 0x00000, 0x18008, 0x18008, 0x00000,
-0x00008, 0x00000, 0x00000, 0x18004, 0x1800c, 0x00000, 0x1800c, 0x0800c,
-0x00000, 0x00000, 0x0800c, 0x00000, 0x0800c, 0x10000, 0x00000, 0x1800c,
-0x00000, 0x1800c, 0x1800c, 0x00000, 0x1800c, 0x00000, 0x00000, 0x08004,
-0x10008, 0x1800c, 0x10008, 0x1800c, 0x00000, 0x1800c, 0x1800c, 0x00000,
-0x00008, 0x00000, 0x00000, 0x18004, 0x1800c, 0x00000, 0x1800c, 0x0800c,
-0x00000, 0x00000, 0x0800c, 0x00000, 0x0800c, 0x10000, 0x00000, 0x0000c
-};
-
-/* maps Cyrillic keysyms to 8859-5 */
-unsigned char _Xcyrillic[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xf2, 0xf3, 0xf1, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xa0 - */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff,
- 0xf0, 0xa2, 0xa3, 0xa1, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xb0 - */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf,
- 0xee, 0xd0, 0xd1, 0xe6, 0xd4, 0xd5, 0xe4, 0xd3, /* 0xc0 - */
- 0xe5, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,
- 0xdf, 0xef, 0xe0, 0xe1, 0xe2, 0xe3, 0xd6, 0xd2, /* 0xd0 - */
- 0xec, 0xeb, 0xd7, 0xe8, 0xed, 0xe9, 0xe7, 0xea,
- 0xce, 0xb0, 0xb1, 0xc6, 0xb4, 0xb5, 0xc4, 0xb3, /* 0xe0 - */
- 0xc5, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe,
- 0xbf, 0xcf, 0xc0, 0xc1, 0xc2, 0xc3, 0xb6, 0xb2, /* 0xf0 - */
- 0xcc, 0xcb, 0xb7, 0xc8, 0xcd, 0xc9, 0xc7, 0xca
-};
-
-/* maps Cyrillic keysyms to KOI8-R */
-unsigned char _Xkoi8[] =
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, /* 10 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 11 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 12 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 13 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 14 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 15 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff};
-
-unsigned short _Xkoi8_size = sizeof _Xkoi8;
-
-/* maps Greek keysyms to 8859-7 */
-unsigned char _Xgreek[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 - */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xb6, 0xb8, 0xb9, 0xba, 0xda, 0x00, 0xbc, /* 0xa0 - */
- 0xbe, 0xdb, 0x00, 0xbf, 0x00, 0x00, 0xb5, 0xaf,
- 0x00, 0xdc, 0xdd, 0xde, 0xdf, 0xfa, 0xc0, 0xfc, /* 0xb0 - */
- 0xfd, 0xfb, 0xe0, 0xfe, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0 - */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd3, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0 - */
- 0xd8, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0 - */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf3, 0xf2, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0 - */
- 0xf8, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-
-static unsigned short keysym_to_unicode_1a1_1ff[] = {
- 0x0104, 0x02d8, 0x0141, 0x0000, 0x013d, 0x015a, 0x0000, /* 0x01a0-0x01a7 */
- 0x0000, 0x0160, 0x015e, 0x0164, 0x0179, 0x0000, 0x017d, 0x017b, /* 0x01a8-0x01af */
- 0x0000, 0x0105, 0x02db, 0x0142, 0x0000, 0x013e, 0x015b, 0x02c7, /* 0x01b0-0x01b7 */
- 0x0000, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, /* 0x01b8-0x01bf */
- 0x0154, 0x0000, 0x0000, 0x0102, 0x0000, 0x0139, 0x0106, 0x0000, /* 0x01c0-0x01c7 */
- 0x010c, 0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x0000, 0x010e, /* 0x01c8-0x01cf */
- 0x0110, 0x0143, 0x0147, 0x0000, 0x0000, 0x0150, 0x0000, 0x0000, /* 0x01d0-0x01d7 */
- 0x0158, 0x016e, 0x0000, 0x0170, 0x0000, 0x0000, 0x0162, 0x0000, /* 0x01d8-0x01df */
- 0x0155, 0x0000, 0x0000, 0x0103, 0x0000, 0x013a, 0x0107, 0x0000, /* 0x01e0-0x01e7 */
- 0x010d, 0x0000, 0x0119, 0x0000, 0x011b, 0x0000, 0x0000, 0x010f, /* 0x01e8-0x01ef */
- 0x0111, 0x0144, 0x0148, 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, /* 0x01f0-0x01f7 */
- 0x0159, 0x016f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0163, 0x02d9 /* 0x01f8-0x01ff */
-};
-
-static unsigned short keysym_to_unicode_2a1_2fe[] = {
- 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0124, 0x0000, /* 0x02a0-0x02a7 */
- 0x0000, 0x0130, 0x0000, 0x011e, 0x0134, 0x0000, 0x0000, 0x0000, /* 0x02a8-0x02af */
- 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0125, 0x0000, /* 0x02b0-0x02b7 */
- 0x0000, 0x0131, 0x0000, 0x011f, 0x0135, 0x0000, 0x0000, 0x0000, /* 0x02b8-0x02bf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010a, 0x0108, 0x0000, /* 0x02c0-0x02c7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02c8-0x02cf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, /* 0x02d0-0x02d7 */
- 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x015c, 0x0000, /* 0x02d8-0x02df */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010b, 0x0109, 0x0000, /* 0x02e0-0x02e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02e8-0x02ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, /* 0x02f0-0x02f7 */
- 0x011d, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x015d /* 0x02f8-0x02ff */
-};
-
-static unsigned short keysym_to_unicode_3a2_3fe[] = {
- 0x0138, 0x0156, 0x0000, 0x0128, 0x013b, 0x0000, /* 0x03a0-0x03a7 */
- 0x0000, 0x0000, 0x0112, 0x0122, 0x0166, 0x0000, 0x0000, 0x0000, /* 0x03a8-0x03af */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013c, 0x0000, /* 0x03b0-0x03b7 */
- 0x0000, 0x0000, 0x0113, 0x0123, 0x0167, 0x014a, 0x0000, 0x014b, /* 0x03b8-0x03bf */
- 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012e, /* 0x03c0-0x03c7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x012a, /* 0x03c8-0x03cf */
- 0x0000, 0x0145, 0x014c, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03d0-0x03d7 */
- 0x0000, 0x0172, 0x0000, 0x0000, 0x0000, 0x0168, 0x016a, 0x0000, /* 0x03d8-0x03df */
- 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012f, /* 0x03e0-0x03e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x012b, /* 0x03e8-0x03ef */
- 0x0000, 0x0146, 0x014d, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03f0-0x03f7 */
- 0x0000, 0x0173, 0x0000, 0x0000, 0x0000, 0x0169, 0x016b /* 0x03f8-0x03ff */
-};
-
-static unsigned short keysym_to_unicode_4a1_4df[] = {
- 0x3002, 0x3008, 0x3009, 0x3001, 0x30fb, 0x30f2, 0x30a1, /* 0x04a0-0x04a7 */
- 0x30a3, 0x03a5, 0x30a7, 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, /* 0x04a8-0x04af */
- 0x30fc, 0x03a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, /* 0x04b0-0x04b7 */
- 0x30af, 0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, /* 0x04b8-0x04bf */
- 0x30bf, 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, /* 0x04c0-0x04c7 */
- 0x30cd, 0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, /* 0x04c8-0x04cf */
- 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, /* 0x04d0-0x04d7 */
- 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f3, 0x309b, 0x309c /* 0x04d8-0x04df */
-};
-
-static unsigned short keysym_to_unicode_5ac_5f2[] = {
- 0x060c, 0x0000, 0x0000, 0x0000, /* 0x05ac-0x05af */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x05b0-0x05b7 */
- 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, /* 0x05b8-0x05bf */
- 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 0x05c0-0x05c7 */
- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0x05c8-0x05cf */
- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 0x05d0-0x05d7 */
- 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x05d8-0x05df */
- 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 0x05e0-0x05e7 */
- 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, /* 0x05e8-0x05ef */
- 0x0650, 0x0651, 0x0652 /* 0x05f0-0x05f7 */
-};
-
-static unsigned short keysym_to_unicode_6a1_6ff[] = {
- 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, /* 0x06a0-0x06a7 */
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0000, 0x045e, 0x045f, /* 0x06a8-0x06af */
- 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, /* 0x06b0-0x06b7 */
- 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x0000, 0x040e, 0x040f, /* 0x06b8-0x06bf */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0x06c0-0x06c7 */
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0x06c8-0x06cf */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0x06d0-0x06d7 */
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0x06d8-0x06df */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0x06e0-0x06e7 */
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0x06e8-0x06ef */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0x06f0-0x06f7 */
- 0x042c, 0x042d, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a /* 0x06f8-0x06ff */
-};
-
-static unsigned short keysym_to_unicode_7a1_7f9[] = {
- 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, /* 0x07a0-0x07a7 */
- 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0385, 0x2015, /* 0x07a8-0x07af */
- 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, /* 0x07b0-0x07b7 */
- 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07b8-0x07bf */
- 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0x07c0-0x07c7 */
- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, /* 0x07c8-0x07cf */
- 0x03a0, 0x03a1, 0x03a2, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, /* 0x07d0-0x07d7 */
- 0x03a8, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07d8-0x07df */
- 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, /* 0x07e0-0x07e7 */
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, /* 0x07e8-0x07ef */
- 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, /* 0x07f0-0x07f7 */
- 0x03c8, 0x03c9 /* 0x07f8-0x07ff */
-};
-
-static unsigned short keysym_to_unicode_8a4_8fe[] = {
- 0x2320, 0x2321, 0x0000, 0x231c, /* 0x08a0-0x08a7 */
- 0x231d, 0x231e, 0x231f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08a8-0x08af */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08b0-0x08b7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2264, 0x2260, 0x2265, 0x222b, /* 0x08b8-0x08bf */
- 0x2234, 0x0000, 0x221e, 0x0000, 0x0000, 0x2207, 0x0000, 0x0000, /* 0x08c0-0x08c7 */
- 0x2245, 0x2246, 0x0000, 0x0000, 0x0000, 0x0000, 0x22a2, 0x0000, /* 0x08c8-0x08cf */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221a, 0x0000, /* 0x08d0-0x08d7 */
- 0x0000, 0x0000, 0x2282, 0x2283, 0x2229, 0x222a, 0x2227, 0x2228, /* 0x08d8-0x08df */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e0-0x08e7 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e8-0x08ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0192, 0x0000, /* 0x08f0-0x08f7 */
- 0x0000, 0x0000, 0x0000, 0x2190, 0x2191, 0x2192, 0x2193 /* 0x08f8-0x08ff */
-};
-
-static unsigned short keysym_to_unicode_9df_9f8[] = {
- 0x2422, /* 0x09d8-0x09df */
- 0x2666, 0x25a6, 0x2409, 0x240c, 0x240d, 0x240a, 0x0000, 0x0000, /* 0x09e0-0x09e7 */
- 0x240a, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x2500, /* 0x09e8-0x09ef */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x251c, 0x2524, 0x2534, 0x252c, /* 0x09f0-0x09f7 */
- 0x2502 /* 0x09f8-0x09ff */
-};
-
-static unsigned short keysym_to_unicode_aa1_afe[] = {
- 0x2003, 0x2002, 0x2004, 0x2005, 0x2007, 0x2008, 0x2009, /* 0x0aa0-0x0aa7 */
- 0x200a, 0x2014, 0x2013, 0x0000, 0x0000, 0x0000, 0x2026, 0x2025, /* 0x0aa8-0x0aaf */
- 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215a, /* 0x0ab0-0x0ab7 */
- 0x2105, 0x0000, 0x0000, 0x2012, 0x2039, 0x2024, 0x203a, 0x0000, /* 0x0ab8-0x0abf */
- 0x0000, 0x0000, 0x0000, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000, /* 0x0ac0-0x0ac7 */
- 0x0000, 0x2122, 0x2120, 0x00ae, 0x25c1, 0x25b7, 0x25cb, 0x25ad, /* 0x0ac8-0x0acf */
- 0x2018, 0x2019, 0x201c, 0x201d, 0x211e, 0x0000, 0x2032, 0x2033, /* 0x0ad0-0x0ad7 */
- 0x0000, 0x271d, 0x0000, 0x220e, 0x25c2, 0x2023, 0x25cf, 0x25ac, /* 0x0ad8-0x0adf */
- 0x25e6, 0x25ab, 0x25ae, 0x25b5, 0x25bf, 0x2606, 0x2022, 0x25aa, /* 0x0ae0-0x0ae7 */
- 0x25b4, 0x25be, 0x261a, 0x261b, 0x2663, 0x2666, 0x2665, 0x0000, /* 0x0ae8-0x0aef */
- 0x2720, 0x2020, 0x2021, 0x2713, 0x2612, 0x266f, 0x266d, 0x2642, /* 0x0af0-0x0af7 */
- 0x2640, 0x2121, 0x2315, 0x2117, 0x2038, 0x201a, 0x201e /* 0x0af8-0x0aff */
-};
-
-/* none of the APL keysyms match the Unicode characters */
-
-static unsigned short keysym_to_unicode_cdf_cfa[] = {
- 0x2017, /* 0x0cd8-0x0cdf */
- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, /* 0x0ce0-0x0ce7 */
- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0x0ce8-0x0cef */
- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, /* 0x0cf0-0x0cf7 */
- 0x05e8, 0x05e9, 0x05ea /* 0x0cf8-0x0cff */
-};
-
-static unsigned short keysym_to_unicode_da1_df9[] = {
- 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, /* 0x0da0-0x0da7 */
- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, /* 0x0da8-0x0daf */
- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, /* 0x0db0-0x0db7 */
- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, /* 0x0db8-0x0dbf */
- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, /* 0x0dc0-0x0dc7 */
- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, /* 0x0dc8-0x0dcf */
- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, /* 0x0dd0-0x0dd7 */
- 0x0e38, 0x0e39, 0x0e3a, 0x0e3b, 0x0e3c, 0x0e3d, 0x0e3e, 0x0e3f, /* 0x0dd8-0x0ddf */
- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, /* 0x0de0-0x0de7 */
- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0000, 0x0000, /* 0x0de8-0x0def */
- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, /* 0x0df0-0x0df7 */
- 0x0e58, 0x0e59 /* 0x0df8-0x0dff */
-};
-
-static unsigned short keysym_to_unicode_ea0_eff[] = {
- 0x0000, 0x1101, 0x1101, 0x11aa, 0x1102, 0x11ac, 0x11ad, 0x1103, /* 0x0ea0-0x0ea7 */
- 0x1104, 0x1105, 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, /* 0x0ea8-0x0eaf */
- 0x11b6, 0x1106, 0x1107, 0x1108, 0x11b9, 0x1109, 0x110a, 0x110b, /* 0x0eb0-0x0eb7 */
- 0x110c, 0x110d, 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1161, /* 0x0eb8-0x0ebf */
- 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, /* 0x0ec0-0x0ec7 */
- 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f, 0x1170, 0x1171, /* 0x0ec8-0x0ecf */
- 0x1172, 0x1173, 0x1174, 0x1175, 0x11a8, 0x11a9, 0x11aa, 0x11ab, /* 0x0ed0-0x0ed7 */
- 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2, 0x11b3, /* 0x0ed8-0x0edf */
- 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba, 0x11bb, /* 0x0ee0-0x0ee7 */
- 0x11bc, 0x11bd, 0x11be, 0x11bf, 0x11c0, 0x11c1, 0x11c2, 0x0000, /* 0x0ee8-0x0eef */
- 0x0000, 0x0000, 0x1140, 0x0000, 0x0000, 0x1159, 0x119e, 0x0000, /* 0x0ef0-0x0ef7 */
- 0x11eb, 0x0000, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9, /* 0x0ef8-0x0eff */
-};
-
-static unsigned short keysym_to_unicode_13bc_13be[] = {
- 0x0152, 0x0153, 0x0178 /* 0x13b8-0x13bf */
-};
-
-static unsigned short keysym_to_unicode_20a0_20ac[] = {
- 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, /* 0x20a0-0x20a7 */
- 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac /* 0x20a8-0x20af */
-};
-
-static int keysym_to_ucs4(keysym)
- KeySym keysym;
-{
- if (keysym > 0 && keysym < 0x100)
- return keysym;
- else if (keysym > 0x1a0 && keysym < 0x200)
- return keysym_to_unicode_1a1_1ff[keysym - 0x1a1];
- else if (keysym > 0x2a0 && keysym < 0x2ff)
- return keysym_to_unicode_2a1_2fe[keysym - 0x2a1];
- else if (keysym > 0x3a1 && keysym < 0x3ff)
- return keysym_to_unicode_3a2_3fe[keysym - 0x3a2];
- else if (keysym > 0x4a0 && keysym < 0x4e0)
- return keysym_to_unicode_4a1_4df[keysym - 0x4a1];
- else if (keysym > 0x5ab && keysym < 0x5f3)
- return keysym_to_unicode_5ac_5f2[keysym - 0x5ac];
- else if (keysym > 0x6a0 && keysym < 0x700)
- return keysym_to_unicode_6a1_6ff[keysym - 0x6a1];
- else if (keysym > 0x7a0 && keysym < 0x7fa)
- return keysym_to_unicode_7a1_7f9[keysym - 0x7a1];
- else if (keysym > 0x8a3 && keysym < 0x8ff)
- return keysym_to_unicode_8a4_8fe[keysym - 0x8a4];
- else if (keysym > 0x9de && keysym < 0x9f9)
- return keysym_to_unicode_9df_9f8[keysym - 0x9df];
- else if (keysym > 0xaa0 && keysym < 0xaff)
- return keysym_to_unicode_aa1_afe[keysym - 0xaa1];
- else if (keysym > 0xcde && keysym < 0xcfb)
- return keysym_to_unicode_cdf_cfa[keysym - 0xcdf];
- else if (keysym > 0xda0 && keysym < 0xdfa)
- return keysym_to_unicode_da1_df9[keysym - 0xda1];
- else if (keysym > 0xe9f && keysym < 0xf00)
- return keysym_to_unicode_ea0_eff[keysym - 0xea0];
- else if (keysym > 0x13bb && keysym < 0x13bf)
- return keysym_to_unicode_13bc_13be[keysym - 0x13bc];
- else if (keysym > 0x209f && keysym < 0x20ad)
- return keysym_to_unicode_20a0_20ac[keysym - 0x20a0];
- else
- return 0;
-}
-
-struct CodesetRec {
- unsigned long locale_code;
- char* locale_name;
- char* escape_seq;
-};
-
-#define sLatin1 0L
-#define sLatin2 1L
-#define sLatin3 2L
-#define sLatin4 3L
-#define sKana 4L
-#define sX0201 0x01000004L
-#define sArabic 5L
-#define sCyrillic 6L
-#define sKoi8 0x01000006L
-#define sGreek 7L
-#define sHebrew 12L
-#define sThai 13L
-#define sKorean 14L
-#define sLatin5 15L
-#define sLatin6 16L
-#define sLatin7 17L
-#define sLatin8 18L
-#define sLatin9 19L
-#define sCurrency 32L
-#define sUTF8 0x02000000L
-
-static struct CodesetRec CodesetTable[] = {
- {sLatin1, "ISO8859-1", "\033-A"},
- {sLatin2, "ISO8859-2", "\033-B"},
- {sLatin3, "ISO8859-3", "\033-C"},
- {sLatin4, "ISO8859-4", "\033-D"},
- {sArabic, "ISO8859-6", "\033-G"},
- {sCyrillic, "ISO8859-5", "\033-L"},
- {sGreek, "ISO8859-7", "\033-F"},
- {sHebrew, "ISO8859-8", "\033-H"},
- {sLatin5, "ISO8859-9", "\033-M"},
- {sLatin6, "ISO8859-10", "\033-V"},
- {sThai, "TACTIS", "\033-T"},
- {sKorean, "ko.euc", "\033$(C"},
- {sThai, "ISO8859-11", "\033-T"},
-#if 0
- {sLatin8, "ISO8859-12", "\033-?"},/* Celtic, superceded by -14 */
- {sLatin7, "ISO8859-13", "\033-?"},/* Baltic Rim */
- {sLatin8 "ISO8859-14", "\033-?"},/* Celtic */
-#endif
- {sUTF8, "utf8", "\033%B"},
- /* Non-standard */
- {sKoi8, "KOI8-R", "\033%/1\200\210koi8-r\002"},
- {sLatin9, "FCD8859-15", "\033%/1\200\213fcd8859-15\002"},/* a.k.a. Latin-0 */
-};
-
-#define NUM_CODESETS sizeof CodesetTable / sizeof CodesetTable[0]
+typedef unsigned int ucs4_t;
-#ifndef XK_emdash
-#define XK_emdash 0xaa9
+typedef int (*ucstocsConvProc)(
+#if NeedFunctionPrototypes
+ XPointer,
+ unsigned char *,
+ ucs4_t,
+ int
#endif
+);
+XPointer _Utf8GetConvByName(
+ const char * name
+);
-/* ================================================================ */
-/*
-File: ConvertUTF.C
-Author: Mark E. Davis
-Copyright (C) 1994 Taligent, Inc. All rights reserved.
-
-This code is copyrighted. Under the copyright laws, this code may not
-be copied, in whole or part, without prior written consent of Taligent.
-
-Taligent grants the right to use or reprint this code as long as this
-ENTIRE copyright notice is reproduced in the code or reproduction.
-The code is provided AS-IS, AND TALIGENT DISCLAIMS ALL WARRANTIES,
-EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN
-NO EVENT WILL TALIGENT BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING,
-WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
-INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
-LOSS) ARISING OUT OF THE USE OR INABILITY TO USE THIS CODE, EVEN
-IF TALIGENT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-BECAUSE SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
-LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE
-LIMITATION MAY NOT APPLY TO YOU.
-
-RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the
-government is subject to restrictions as set forth in subparagraph
-(c)(l)(ii) of the Rights in Technical Data and Computer Software
-clause at DFARS 252.227-7013 and FAR 52.227-19.
-
-This code may be protected by one or more U.S. and International
-Patents.
-
-TRADEMARKS: Taligent and the Taligent Design Mark are registered
-trademarks of Taligent, Inc.
-*/
-/* ================================================================ */
-
-#define kReplacementCharacter 0x0000FFFDUL
-#define kMaximumUCS2 0x0000FFFFUL
-#define kMaximumUCS4 0x7FFFFFFFUL
-
-typedef enum {
- ok, /* conversion successful */
- sourceExhausted, /* partial character in source, but hit end */
- targetExhausted /* insuff. room in target for conversion */
-} ConversionResult;
-
-#define halfShift 10
-#define halfBase 0x0010000UL
-#define halfMask 0x3FFUL
-#define kSurrogateHighStart 0xD800UL
-#define kSurrogateHighEnd 0xDBFFUL
-#define kSurrogateLowStart 0xDC00UL
-#define kSurrogateLowEnd 0xDFFFUL
-
-typedef unsigned int UCS4; /* wchar_t, but on AIX, SunOS wchar_t is 16 bits */
-typedef unsigned char UTF8;
-
-static UCS4 offsetsFromUTF8[6] = {
- 0x00000000UL, 0x00003080UL, 0x000E2080UL,
- 0x03C82080UL, 0xFA082080UL, 0x82082080UL
+struct SubstRec {
+ char* encoding_name;
+ char* charset_name;
};
-static char bytesFromUTF8[256] = {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+static struct SubstRec SubstTable[] = {
+ {"STRING", "ISO8859-1"},
+ {"TIS620", "TIS620-0"},
+ {"UTF-8", "ISO10646-1"}
};
+#define num_substitute (sizeof SubstTable / sizeof SubstTable[0])
-static UTF8 firstByteMark[7] = {
- 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC
-};
-
-static ConversionResult ConvertUCS4toUTF8 (
- UCS4** sourceStart, UCS4* sourceEnd,
- UTF8** targetStart, UTF8* targetEnd)
+/*
+ * Given the name of a charset, returns the pointer to convertors
+ * from UCS char to specified charset char.
+ * This converter is needed for _XimGetCharCode subroutine.
+ */
+XPointer
+#if NeedFunctionPrototypes
+_XimGetLocaleCode (
+ _Xconst char* encoding_name)
+#else
+_XimGetLocaleCode (encoding_name)
+ _Xconst char* encoding_name;
+#endif
{
- ConversionResult result = ok;
- register UCS4* source = *sourceStart;
- register UTF8* target = *targetStart;
- while (source < sourceEnd) {
- register UCS4 ch;
- register unsigned short bytesToWrite = 0;
- register const UCS4 byteMask = 0xBF;
- register const UCS4 byteMark = 0x80;
- ch = *source++;
- if (ch >= kSurrogateHighStart && ch <= kSurrogateHighEnd
- && source < sourceEnd) {
- register UCS4 ch2 = *source;
- if (ch2 >= kSurrogateLowStart && ch2 <= kSurrogateLowEnd) {
- ch = ((ch - kSurrogateHighStart) << halfShift)
- + (ch2 - kSurrogateLowStart) + halfBase;
- ++source;
- };
- };
- if (ch < 0x80) { bytesToWrite = 1;
- } else if (ch < 0x800) { bytesToWrite = 2;
- } else if (ch < 0x10000) { bytesToWrite = 3;
- } else if (ch < 0x200000) { bytesToWrite = 4;
- } else if (ch < 0x4000000) { bytesToWrite = 5;
- } else if (ch <= kMaximumUCS4){ bytesToWrite = 6;
- } else { bytesToWrite = 2;
- ch = kReplacementCharacter;
- }; /* I wish there were a smart way to avoid this conditional */
-
- target += bytesToWrite;
- if (target > targetEnd) {
- target -= bytesToWrite; result = targetExhausted; break;
- };
- switch (bytesToWrite) { /* note: code falls through cases! */
- case 6: *--target = (ch | byteMark) & byteMask; ch >>= 6;
- case 5: *--target = (ch | byteMark) & byteMask; ch >>= 6;
- case 4: *--target = (ch | byteMark) & byteMask; ch >>= 6;
- case 3: *--target = (ch | byteMark) & byteMask; ch >>= 6;
- case 2: *--target = (ch | byteMark) & byteMask; ch >>= 6;
- case 1: *--target = ch | firstByteMark[bytesToWrite];
- };
- target += bytesToWrite;
- };
- *sourceStart = source;
- *targetStart = target;
- return result;
+ XPointer cvt = _Utf8GetConvByName(encoding_name);
+ if (!cvt && encoding_name) {
+ int i;
+ for (i = 0; i < num_substitute; i++)
+ if (!strcmp(encoding_name, SubstTable[i].encoding_name))
+ return _Utf8GetConvByName(SubstTable[i].charset_name);
+ }
+ return cvt;
}
+/*
+ * Returns the locale dependent representation of a keysym.
+ * The locale's encoding is passed in form of pointer to UCS convertor.
+ * The resulting multi-byte sequence is placed starting at buf (a buffer
+ * with nbytes bytes, nbytes should be >= 8) and is NUL terminated.
+ * Returns the length of the resulting multi-byte sequence, excluding the
+ * terminating NUL byte. Return 0 if the keysym is not representable in the
+ * locale
+ */
/*ARGSUSED*/
int
#if NeedFunctionPrototypes
-_XGetCharCode (
- unsigned long locale_code,
- KeySym keysym,
- unsigned char* buf,
- int nbytes)
+_XimGetCharCode (
+ XPointer ucs_conv,
+ KeySym keysym,
+ unsigned char* buf,
+ int nbytes)
#else
-_XGetCharCode (locale_code, keysym, buf, nbytes)
- unsigned long locale_code;
+_XimGetCharCode (ucs_conv, keysym, buf, nbytes)
+ XPointer ucs_conv;
KeySym keysym;
unsigned char *buf;
int nbytes;
#endif
{
- unsigned long kset;
- int count,isLatin1;
-
- if (locale_code == sUTF8) {
- unsigned int ucs4[2];
- unsigned int* ucs4vec[1];
- unsigned char* utf8vec[1];
-
- ucs4[0] = keysym_to_ucs4 (keysym);
- ucs4[1] = 0;
- ucs4vec[0] = ucs4;
- utf8vec[0] = buf;
-
- (void) ConvertUCS4toUTF8 (ucs4vec, &ucs4[1], utf8vec, &buf[nbytes]);
- return (strlen ((char*) buf));
+ int count = 0;
+ ucstocsConvProc cvt = (ucstocsConvProc) ucs_conv;
+ ucs4_t ucs4;
+
+ if (keysym < 0x80) {
+ buf[0] = (char) keysym;
+ count = 1;
+ } else if (cvt) {
+ ucs4 = KeySymToUcs4(keysym);
+ if (ucs4)
+ count = (*cvt)((XPointer)NULL, buf, ucs4, nbytes);
}
- kset = locale_code&0xffffff;
-
- isLatin1 = ((keysym&0xffffff00)==0);
- count = 0;
-
- if ( keysym == NoSymbol )
- return 0;
- else if ((keysym >> 8) == kset) {
- count = 1;
- switch (kset) {
- case sKana:
- *buf = (unsigned char)(keysym & 0xff);
- if (buf[0] == 0x7e)
- count = 0;
- break;
- case sCyrillic:
- if (locale_code == sKoi8)
- *buf = _Xkoi8[keysym & 0x7f];
- else
- *buf = _Xcyrillic[keysym & 0x7f];
- break;
- case sGreek:
- *buf = _Xgreek[keysym & 0x7f];
- if (!buf[0])
- count = 0;
- break;
- default:
- *buf = (unsigned char)(keysym & 0xff);
- break;
- }
- } else if ((locale_code != 0) && (isLatin1) && (keysym & 0x80)) {
- if (_Xlatin1[keysym & 0x7f] & (1 << kset)) {
- /* Most non-latin1 locales use some latin-1 upper half
- keysyms as defined by bitpatterns in array latin1.
- Enforce it. */
- *buf = (unsigned char)(keysym & 0xff);
- count = 1;
- } else {
- count= 1;
- if ((locale_code == sHebrew) && (keysym == XK_multiply))
- *buf = (unsigned char)0xaa;
- else if ((locale_code == sHebrew) && (keysym == XK_division))
- *buf = (unsigned char)0xba;
- else if ((locale_code == sCyrillic) && (keysym == XK_section))
- *buf = (unsigned char)0xfd;
- else if ((locale_code == sX0201) && (keysym == XK_yen))
- *buf = (unsigned char)0x5c;
- else count = 0;
- }
- } else if (isLatin1) {
- if ((locale_code == sX0201) &&
- ((keysym == XK_backslash) || (keysym == XK_asciitilde)))
- count = 0;
- if ( (keysym&0x80)==0 ) {
- *buf = (unsigned char)(keysym&0x7f);
- count = 1;
- }
- } else if ((keysym >> 8) == sLatin2) {
- count = 1;
- if ((keysym & 0x80) && (_Xlatin2[keysym & 0x7f] & (1 << kset)))
- *buf = (unsigned char)(keysym & 0xff);
- else if (locale_code == sLatin5) {
- if (keysym == XK_Scedilla)
- *buf = (unsigned char)0xde;
- else if (keysym == XK_scedilla)
- *buf = (unsigned char)0xfe;
- else count = 0;
- } else if (locale_code == sLatin9) {
- if (keysym == XK_Scaron)
- *buf = (unsigned char)0xa6;
- else if (keysym == XK_scaron)
- *buf = (unsigned char)0xa8;
- else if (keysym == XK_Zcaron)
- *buf = (unsigned char)0xb4;
- else if (keysym == XK_zcaron)
- *buf = (unsigned char)0xb8;
- else count = 0;
- } else count = 0;
- } else if ((keysym >> 8) == sLatin3) {
- if (locale_code == sLatin5) {
- count = 1;
- switch (keysym) {
- case XK_Gbreve: *buf = (unsigned char)0xd0; break;
- case XK_gbreve: *buf = (unsigned char)0xf0; break;
- case XK_Scedilla: *buf = (unsigned char)0xde; break;
- case XK_scedilla: *buf = (unsigned char)0xfe; break;
- case XK_Iabovedot: *buf = (unsigned char)0xdd; break;
- case XK_idotless: *buf = (unsigned char)0xfd; break;
- default: count = 0;
- }
- }
- } else if ((keysym >> 8) == sLatin4) {
- if (locale_code == sLatin6) {
- count = 1;
- switch (keysym) {
- case XK_Emacron: *buf = (unsigned char)0xa2; break;
- case XK_Gcedilla: *buf = (unsigned char)0xa3; break;
- case XK_Imacron: *buf = (unsigned char)0xa4; break;
- case XK_Lcedilla: *buf = (unsigned char) 0xa8; break;
- case XK_Dstroke: *buf = (unsigned char)0xa9; break;
- case XK_Scaron: *buf = (unsigned char)0xaa; break;
- case XK_Tslash: *buf = (unsigned char)0xab; break;
- case XK_Zcaron: *buf = (unsigned char)0xac; break;
- case XK_Umacron: *buf = (unsigned char)0xae; break;
- case XK_Utilde: *buf = (unsigned char)0xd7; break;
- case XK_ENG: *buf = (unsigned char)0xaf; break;
- case XK_emacron: *buf = (unsigned char)0xb2; break;
- case XK_gcedilla: *buf = (unsigned char)0xb3; break;
- case XK_imacron: *buf = (unsigned char)0xb4; break;
- case XK_lcedilla: *buf = (unsigned char) 0xb8; break;
- case XK_dstroke: *buf = (unsigned char)0xb9; break;
- case XK_scaron: *buf = (unsigned char)0xba; break;
- case XK_tslash: *buf = (unsigned char)0xbb; break;
- case XK_zcaron: *buf = (unsigned char)0xbc; break;
- case XK_umacron: *buf = (unsigned char)0xbe; break;
- case XK_utilde: *buf = (unsigned char)0xf7; break;
- case XK_eng: *buf = (unsigned char)0xbf; break;
- case XK_kra: *buf = (unsigned char)0xff; break;
- case XK_Itilde:
- case XK_Kcedilla:
- case XK_Iogonek:
- case XK_Ncedilla:
- case XK_Omacron:
- case XK_Uogonek:
- case XK_itilde:
- case XK_kcedilla:
- case XK_iogonek:
- case XK_ncedilla:
- case XK_omacron:
- case XK_uogonek: *buf = (unsigned char)(keysym & 0xff); break;
- default: count = 0;
- }
- }
- } else if (locale_code == sLatin9 && keysym == XK_EuroSign) {
- count = 1;
- *buf = (unsigned char)0xa4;
- } else if ((locale_code == sGreek) &&
- ((keysym == XK_leftsinglequotemark) ||
- (keysym == XK_rightsinglequotemark))) {
- *buf = (unsigned char)(keysym - (XK_leftsinglequotemark - 0xa1));
- count = 1;
- }
+ if (count < 0)
+ count = 0;
if (count>nbytes)
- return nbytes;
+ return nbytes;
if (count<nbytes)
- buf[count]= '\0';
+ buf[count]= '\0';
return count;
}
@@ -761,8 +164,9 @@ static int lookup_string (event, buffer, nbytes, keysym, status)
unsigned ctrls = XkbGetXlibControls (event->display);
XkbSetXlibControls (event->display,
XkbLC_ForceLatin1Lookup, XkbLC_ForceLatin1Lookup);
- ret = XLookupString(event, buffer, nbytes, keysym, status);
- XkbSetXlibControls (event->display, ctrls, ctrls);
+ ret = XLookupString(event, (char *)buffer, nbytes, keysym, status);
+ XkbSetXlibControls (event->display,
+ XkbLC_ForceLatin1Lookup, ctrls);
return ret;
}
#endif
@@ -778,45 +182,20 @@ _XimLookupMBText(ic, event, buffer, nbytes, keysym, status)
KeySym* keysym;
XComposeStatus* status;
{
- int count, local_count;
+ int count;
KeySym symbol;
- struct CodesetRec *cset;
- int i;
Status dummy;
Xim im = (Xim)ic->core.im;
- XLCd lcd = im->core.lcd;
- unsigned char local_buf[BUF_SIZE];
+ XimCommonPrivateRec* private = &im->private.common;
unsigned char look[BUF_SIZE];
-
+ ucs4_t ucs4;
/* force a latin-1 lookup for compatibility */
count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
if (keysym != NULL) *keysym = symbol;
if ((nbytes == 0) || (symbol == NoSymbol)) return count;
- for (cset = NULL, i = 0; i < NUM_CODESETS; i++) {
- if (strcmp (XLC_PUBLIC(lcd,encoding_name), CodesetTable[i].locale_name) == 0) {
- cset = &CodesetTable[i];
- break;
- }
- }
- if (count == 0 && cset != NULL ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00) &&
- cset != NULL && cset->locale_code != 0)) {
- if ((count = _XGetCharCode(cset->locale_code, symbol,
- look, sizeof look))) {
- strcpy((char*) local_buf, cset->escape_seq);
- local_count = strlen(cset->escape_seq);
- local_buf[local_count] = look[0];
- local_count++;
- local_buf[local_count] = '\0';
- if ((count = im->methods->ctstombs(ic->core.im,
- (char*) local_buf, local_count,
- (char *)buffer, nbytes, &dummy)) < 0) {
- count = 0;
- }
- }
- } else if (count > 1) { /* not ASCII Encoding */
+ if (count > 1) {
memcpy(look, (char *)buffer,count);
look[count] = '\0';
if ((count = im->methods->ctstombs(ic->core.im,
@@ -824,8 +203,40 @@ _XimLookupMBText(ic, event, buffer, nbytes, keysym, status)
buffer, nbytes, &dummy)) < 0) {
count = 0;
}
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if (_XlcConvert(private->ucstoc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+ if (_XlcConvert(private->cstomb_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
}
- /*
+ /* FIXME:
* we should make sure that if the character is a Latin1 character
* and it's on the right side, and we're in a non-Latin1 locale
* that this is a valid Latin1 character for this locale.
@@ -842,51 +253,60 @@ _XimLookupWCText(ic, event, buffer, nbytes, keysym, status)
KeySym* keysym;
XComposeStatus* status;
{
- int count, local_count;
+ int count;
KeySym symbol;
- struct CodesetRec *cset;
- int i;
Status dummy;
Xim im = (Xim)ic->core.im;
- XLCd lcd = im->core.lcd;
- unsigned char local_buf[BUF_SIZE];
+ XimCommonPrivateRec* private = &im->private.common;
unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
/* force a latin-1 lookup for compatibility */
count = XLOOKUPSTRING(event, (char *)look, nbytes, &symbol, status);
if (keysym != NULL) *keysym = symbol;
if ((nbytes == 0) || (symbol == NoSymbol)) return count;
- for (cset = NULL, i = 0; i < NUM_CODESETS; i++) {
- if (strcmp (XLC_PUBLIC(lcd,encoding_name), CodesetTable[i].locale_name) == 0) {
- cset = &CodesetTable[i];
- break;
- }
- }
- if (count == 0 && cset != NULL ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00) &&
- cset != NULL && cset->locale_code != 0)) {
- if ((count = _XGetCharCode(cset->locale_code, symbol,
- look, sizeof look))) {
- strcpy((char*) local_buf, cset->escape_seq);
- local_count = strlen(cset->escape_seq);
- local_buf[local_count] = look[0];
- local_count++;
- local_buf[local_count] = '\0';
- if ((count = im->methods->ctstowcs(ic->core.im,
- (char*) local_buf, local_count,
- buffer, nbytes, &dummy)) < 0) {
- count = 0;
- }
- }
- } else if (count > 1) {
+ if (count > 1) {
if ((count = im->methods->ctstowcs(ic->core.im,
(char*) look, count,
buffer, nbytes, &dummy)) < 0) {
count = 0;
}
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if (_XlcConvert(private->ucstoc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+
+ if (_XlcConvert(private->cstowc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
} else
- /*
+ /* FIXME:
* we should make sure that if the character is a Latin1 character
* and it's on the right side, and we're in a non-Latin1 locale
* that this is a valid Latin1 character for this locale.
@@ -895,3 +315,61 @@ _XimLookupWCText(ic, event, buffer, nbytes, keysym, status)
return count;
}
+
+int
+_XimLookupUTF8Text(ic, event, buffer, nbytes, keysym, status)
+ Xic ic;
+ XKeyEvent* event;
+ char* buffer;
+ int nbytes;
+ KeySym* keysym;
+ XComposeStatus* status;
+{
+ int count;
+ KeySym symbol;
+ Status dummy;
+ Xim im = (Xim)ic->core.im;
+ XimCommonPrivateRec* private = &im->private.common;
+ unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
+
+ /* force a latin-1 lookup for compatibility */
+ count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
+ if (keysym != NULL) *keysym = symbol;
+ if ((nbytes == 0) || (symbol == NoSymbol)) return count;
+
+ if (count > 1) {
+ memcpy(look, (char *)buffer,count);
+ look[count] = '\0';
+ if ((count = im->methods->ctstoutf8(ic->core.im,
+ (char*) look, count,
+ buffer, nbytes, &dummy)) < 0) {
+ count = 0;
+ }
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ int from_len = 1;
+ XPointer to = (XPointer) buffer;
+ int to_len = nbytes;
+
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if (_XlcConvert(private->ucstoutf8_conv,
+ &from, &from_len, &to, &to_len,
+ NULL, 0) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
+ /* FIXME:
+ * we should make sure that if the character is a Latin1 character
+ * and it's on the right side, and we're in a non-Latin1 locale
+ * that this is a valid Latin1 character for this locale.
+ */
+ return count;
+}
diff --git a/src/locking.c b/src/locking.c
index 96926975..20b6d66b 100644
--- a/src/locking.c
+++ b/src/locking.c
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/locking.c,v 1.4 2001/12/14 19:54:10 dawes Exp $ */
/*
* Author: Stephen Gildea, MIT X Consortium
@@ -46,10 +47,6 @@ in this Software without prior written authorization from The Open Group.
#define NUM_FREE_CVLS 4
-/* in XOpenDis.c */
-extern int (*_XInitDisplayLock_fn)();
-extern void (*_XFreeDisplayLock_fn)();
-
/* in lcWrap.c */
extern LockInfoPtr _Xi18n_lock;
diff --git a/src/locking.h b/src/locking.h
index 2b3afd32..499e6169 100644
--- a/src/locking.h
+++ b/src/locking.h
@@ -24,6 +24,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/locking.h,v 1.4 2001/12/14 19:54:10 dawes Exp $ */
/*
* Author: Stephen Gildea, MIT X Consortium
@@ -170,4 +171,8 @@ typedef struct _LockInfoRec {
xmutex_t lock;
} LockInfoRec;
+/* XOpenDis.c */
+extern int (*_XInitDisplayLock_fn)(Display *dpy);
+extern void (*_XFreeDisplayLock_fn)(Display *dpy);
+
#endif /* _X_locking_H_ */
diff --git a/src/os2Stubs.c b/src/os2Stubs.c
new file mode 100644
index 00000000..6e3c4655
--- /dev/null
+++ b/src/os2Stubs.c
@@ -0,0 +1,426 @@
+/*
+ * (c) Copyright 1996 by Sebastien Marineau and Holger Veit
+ * <marineau@genie.uottawa.ca>
+ * <Holger.Veit@gmd.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
+ * shall not be used in advertising or otherwise to promote the sale, use or other
+ * dealings in this Software without prior written authorization from Holger Veit or
+ * Sebastien Marineau.
+ *
+ */
+
+/* $XFree86: xc/lib/X11/os2Stubs.c,v 3.1 2002/05/31 18:45:42 dawes Exp $ */
+
+/* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection
+ * functions and the "optimized" select() for the clients */
+
+#define I_NEED_OS2_H
+#include <X11/Xpoll.h>
+#include <stdio.h>
+#include <sys/errno.h>
+#define INCL_DOSSEMAPHORES
+#define INCL_DOSNPIPES
+#define INCL_DOSMISC
+#define INCL_DOSMODULEMGR
+#undef BOOL
+#undef BYTE
+#include <os2.h>
+#include <sys/select.h>
+#include <sys/time.h>
+
+char *__XOS2RedirRoot(char *fname)
+{
+ /* This adds a further redirection by allowing the ProjectRoot
+ * to be prepended by the content of the envvar X11ROOT.
+ * This is for the purpose to move the whole X11 stuff to a different
+ * disk drive.
+ * The feature was added despite various environment variables
+ * because not all file opens respect them.
+ */
+ static char redirname[300]; /* enough for long filenames */
+ char *root;
+
+ /* if name does not start with /, assume it is not root-based */
+ if (fname==0 || !(fname[0]=='/' || fname[0]=='\\'))
+ return fname;
+
+ root = (char*)getenv("X11ROOT");
+ if (root==0 ||
+ (fname[1]==':' && isalpha(fname[0])) ||
+ (strlen(fname)+strlen(root)+2) > 300)
+ return fname;
+ sprintf(redirname,"%s%s",root,fname);
+ return redirname;
+}
+
+char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3)
+{
+ /* this first constructs a name from a format and up to three
+ * components, then adds a path
+ */
+ char buf[300];
+ sprintf(buf,format,arg1,arg2,arg3);
+ return __XOS2RedirRoot(buf);
+}
+
+/* This below implements select() for the calls in this file. It has been */
+/* somewhat optimized for improved performance, but assumes a few */
+/* things so it cannot be used as a general select. If both pipes and */
+/* sockets are present, this may call the emx select */
+
+
+HEV hPipeSem;
+HMODULE hmod_so32dll;
+static int (*os2_tcp_select)(int*,int,int,int,long);
+ULONG os2_get_sys_millis();
+extern int _files[];
+
+#define MAX_TCP 256
+/* These lifted from sys/emx.h. Change if that changes there! */
+#define F_SOCKET 0x10000000
+#define F_PIPE 0x20000000
+
+struct select_data
+{
+ fd_set read_copy;
+ fd_set write_copy;
+ BOOL have_read;
+ BOOL have_write;
+ int tcp_select_mask[MAX_TCP];
+ int tcp_emx_handles[MAX_TCP];
+ int tcp_select_copy[MAX_TCP];
+ int socket_nread;
+ int socket_nwrite;
+ int socket_ntotal;
+ int pipe_ntotal;
+ int pipe_have_write;
+ int max_fds;
+};
+
+int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *exceptfds, struct timeval *timeout)
+{
+static BOOL FirstTime=TRUE;
+static haveTCPIP=TRUE;
+ULONG timeout_ms;
+ULONG postCount, start_millis,now_millis;
+char faildata[16];
+struct select_data sd;
+BOOL any_ready;
+int np,ns, i,ready_handles,n;
+APIRET rc;
+
+sd.have_read=FALSE; sd.have_write=FALSE;
+sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
+sd.max_fds=31; ready_handles=0; any_ready=FALSE;
+sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
+
+if(FirstTime){
+ /* First load the so32dll.dll module and get a pointer to the SELECT fn */
+
+ if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
+ fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
+ haveTCPIP=FALSE;
+ }
+ if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
+ fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
+ haveTCPIP=FALSE;
+ }
+ /* Call these a first time to set the semaphore */
+ rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
+ if(rc) {
+ fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
+ return(-1);
+ }
+ rc = DosResetEventSem(hPipeSem, &postCount);
+ FirstTime = FALSE;
+}
+
+/* Set up the time delay structs */
+
+ if(timeout!=NULL) {
+ timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
+ }
+ else { timeout_ms=1000000; } /* This should be large enough... */
+ if(timeout_ms>0) start_millis=os2_get_sys_millis();
+
+/* Copy the masks */
+ {FD_ZERO(&sd.read_copy);}
+ {FD_ZERO(&sd.write_copy);}
+ if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
+ if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
+
+/* And zero the original masks */
+ if(sd.have_read){ FD_ZERO(readfds);}
+ if(sd.have_write) {FD_ZERO(writefds);}
+ if(exceptfds != NULL) {FD_ZERO(exceptfds);}
+
+/* Now we parse the fd_sets passed to select and separate pipe/sockets */
+ n = os2_parse_select(&sd,nfds);
+ if(n == -1) {
+ errno = EBADF;
+ return (-1);
+ }
+
+/* Now we have three cases: either we have sockets, pipes, or both */
+/* We handle all three cases differently to optimize things */
+
+/* Case 1: only pipes! */
+ if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ return (np);
+ }
+ else if (np == -1) { return(-1); }
+ while(!any_ready){
+ rc = DosWaitEventSem(hPipeSem, timeout_ms);
+ if(rc == 640) {
+ return(0);
+ }
+ if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if (np > 0){
+ return(np);
+ }
+ else if (np < 0){ return(-1); }
+ }
+ }
+
+/* Case 2: only sockets. Just let the os/2 tcp select do the work */
+ if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
+ ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
+ return (ns);
+ }
+
+/* Case 3: combination of both */
+ if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ any_ready=TRUE;
+ ready_handles += np;
+ }
+ else if (np == -1) { return(-1); }
+
+ ns = os2_check_sockets(&sd,readfds,writefds, 0);
+ if(ns>0){
+ ready_handles+=ns;
+ any_ready = TRUE;
+ }
+ else if (ns == -1) {return(-1);}
+
+ while (!any_ready && timeout_ms){
+
+ rc = DosWaitEventSem(hPipeSem, 10L);
+ if(rc == 0){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ ready_handles+=np;
+ any_ready = TRUE;
+ }
+ else if (np == -1) {
+ return(-1); }
+ }
+
+ ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
+ if(ns>0){
+ ready_handles+=ns;
+ any_ready = TRUE;
+ }
+ else if (ns == -1) {return(-1);}
+
+ if (i%8 == 0) {
+ now_millis = os2_get_sys_millis();
+ if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
+ }
+ i++;
+ }
+ }
+
+return(ready_handles);
+}
+
+
+ULONG os2_get_sys_millis()
+{
+ APIRET rc;
+ ULONG milli;
+
+ rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
+ if(rc) {
+ fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
+ return(0);
+ }
+ return(milli);
+}
+
+int os2_parse_select(sd,nfds)
+struct select_data *sd;
+int nfds;
+{
+ int i;
+ APIRET rc;
+/* First we determine up to which descriptor we need to check. */
+/* No need to check up to 256 if we don't have to (and usually we dont...)*/
+/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
+
+ if(nfds > sd->max_fds){
+ for(i=0;i<((FD_SETSIZE+31)/32);i++){
+ if(sd->read_copy.fds_bits[i] ||
+ sd->write_copy.fds_bits[i])
+ sd->max_fds=(i*32) +32;
+ }
+ }
+ else { sd->max_fds = nfds; }
+/* Check if result is greater than specified in select() call */
+ if(sd->max_fds > nfds) sd->max_fds = nfds;
+
+ if (sd->have_read)
+ {
+ for (i = 0; i < sd->max_fds; ++i) {
+ if (FD_ISSET (i, &sd->read_copy)){
+ if(_files[i] & F_SOCKET)
+ {
+ sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
+ sd->tcp_emx_handles[sd->socket_ntotal]=i;
+ sd->socket_ntotal++; sd->socket_nread++;
+ }
+ else if (_files[i] & F_PIPE)
+ {
+ sd -> pipe_ntotal++;
+ rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
+ if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
+ }
+ }
+ }
+ }
+
+ if (sd->have_write)
+ {
+ for (i = 0; i < sd->max_fds; ++i) {
+ if (FD_ISSET (i, &sd->write_copy)){
+ if(_files[i] & F_SOCKET)
+ {
+ sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
+ sd->tcp_emx_handles[sd->socket_ntotal]=i;
+ sd->socket_ntotal++; sd->socket_nwrite++;
+ }
+ else if (_files[i] & F_PIPE)
+ {
+ sd -> pipe_ntotal++;
+ rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
+ if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
+ sd -> pipe_have_write=TRUE;
+ }
+ }
+ }
+ }
+
+
+return(sd->socket_ntotal);
+}
+
+
+int os2_check_sockets(sd,readfds,writefds)
+struct select_data *sd;
+fd_set *readfds,*writefds;
+{
+ int e,i;
+ int j,n;
+ memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
+ sd->socket_ntotal*sizeof(int));
+
+ e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
+ sd->socket_nwrite, 0, 0);
+
+ if(e == 0) return(e);
+/* We have something ready? */
+ if(e>0){
+ j = 0; n = 0;
+ for (i = 0; i < sd->socket_nread; ++i, ++j)
+ if (sd->tcp_select_copy[j] != -1)
+ {
+ FD_SET (sd->tcp_emx_handles[j], readfds);
+ n ++;
+ }
+ for (i = 0; i < sd->socket_nwrite; ++i, ++j)
+ if (sd->tcp_select_copy[j] != -1)
+ {
+ FD_SET (sd->tcp_emx_handles[j], writefds);
+ n ++;
+ }
+ errno = 0;
+
+ return n;
+ }
+ if(e<0){
+ /*Error -- TODO */
+ fprintf(stderr,"Error in server select! e=%d\n",e);
+ errno = EBADF;
+ return (-1);
+ }
+ }
+
+/* Check to see if anything is ready on pipes */
+
+int os2_check_pipes(sd,readfds,writefds)
+struct select_data *sd;
+fd_set *readfds,*writefds;
+{
+int i,e;
+ULONG ulPostCount;
+PIPESEMSTATE pipeSemState[128];
+APIRET rc;
+ e = 0;
+ rc = DosResetEventSem(hPipeSem,&ulPostCount);
+ rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
+ sizeof(pipeSemState));
+ if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
+ i=0;
+ while (pipeSemState[i].fStatus != 0) {
+ /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
+ pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
+ pipeSemState[i].usAvail); */
+ if((pipeSemState[i].fStatus == 1) &&
+ (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
+ FD_SET(pipeSemState[i].usKey,readfds);
+ e++;
+ }
+ else if((pipeSemState[i].fStatus == 2) &&
+ (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
+ FD_SET(pipeSemState[i].usKey,writefds);
+ e++;
+ }
+ else if( (pipeSemState[i].fStatus == 3) &&
+ ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
+ (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
+ errno = EBADF;
+ return (-1);
+ }
+ i++;
+ } /* endwhile */
+ /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
+errno = 0;
+return(e);
+}
+
+
+
diff --git a/src/udcInf.c b/src/udcInf.c
index c1392bed..126511ed 100644
--- a/src/udcInf.c
+++ b/src/udcInf.c
@@ -32,6 +32,9 @@ from The Open Group.
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+
+/* $XFree86: xc/lib/X11/udcInf.c,v 1.7 2001/12/14 19:54:11 dawes Exp $ */
+
#include <stdio.h>
#include <locale.h>
#include <Xlib.h>
@@ -386,14 +389,15 @@ XlcCharSet charset;
char *src;
int size;
{
- int name_len,seq_len,i;
+ int name_len,seq_len,rest_len,i;
name_len = 2 + strlen(charset->encoding_name) + 1;
seq_len = strlen(charset->ct_sequence);
- if (name_len + seq_len + strlen(src) >= size)
+ rest_len = strlen(charset->encoding_name) + 1 + strlen(src);
+ if (name_len + seq_len + strlen(src) >= size || rest_len >= 0x4000)
return False;
strcpy(from,charset->ct_sequence);
- from[seq_len] = name_len / 128 + 128;
- from[seq_len+1] = name_len % 128 + 128;
+ from[seq_len] = (rest_len >> 7) + 128;
+ from[seq_len+1] = (rest_len & 0x7f) + 128;
strcpy(&from[seq_len + 2],charset->encoding_name);
from[seq_len+name_len-1] = 0x02; /* STX */
strcpy(&from[seq_len + name_len],src);
@@ -415,7 +419,7 @@ unsigned long *codepoint;
unsigned long from32[25];
unsigned long to32[25];
int i,j;
- char tmp[256],charsetname[256],src[10];
+ char charsetname[256],src[10];
XlcConv conv;
XlcCharSet charset;
XPointer args[2];
@@ -652,7 +656,7 @@ int *num_gi;
unsigned int from32[25];
unsigned int to32[25];
int i,j;
- char tmp[256],charsetname[256],src[10];
+ char charsetname[256],src[10];
XlcConv conv;
XlcCharSet charset;
XPointer args[2];
diff --git a/src/util/makekeys.c b/src/util/makekeys.c
index 24272bfb..ee3aefae 100644
--- a/src/util/makekeys.c
+++ b/src/util/makekeys.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/util/makekeys.c,v 3.7 2001/12/14 19:54:32 dawes Exp $ */
/* Constructs hash tables for XStringToKeysym and XKeysymToString. */
@@ -33,12 +34,7 @@ from The Open Group.
#include <X11/Xos.h>
#include <X11/keysymdef.h>
#include <stdio.h>
-
-#ifndef X_NOT_STDC_ENV
#include <stdlib.h>
-#else
-char *malloc();
-#endif
#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */
char *malloc();
#endif /* macII */
@@ -61,7 +57,8 @@ unsigned short indexes[KTNUM];
KeySym values[KTNUM];
char buf[1024];
-main()
+int
+main(int argc, char *argv[])
{
int ksnum;
int max_rehash;
@@ -144,7 +141,7 @@ next1: ;
z = best_z;
printf("#ifdef NEEDKTABLE\n");
- printf("Const unsigned char _XkeyTable[] = {\n");
+ printf("const unsigned char _XkeyTable[] = {\n");
printf("0,\n");
k = 1;
for (i = 0; i < ksnum; i++) {
@@ -161,7 +158,7 @@ next1: ;
offsets[j] = k;
indexes[i] = k;
val = info[i].val;
- printf("0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x, ",
+ printf("0x%.2lx, 0x%.2lx, 0x%.2lx, 0x%.2lx, ",
(sig >> 8) & 0xff, sig & 0xff,
(val >> 8) & 0xff, val & 0xff);
for (name = info[i].name, k += 5; (c = *name++); k++)
@@ -173,7 +170,7 @@ next1: ;
printf("#define KTABLESIZE %d\n", z);
printf("#define KMAXHASH %d\n", best_max_rehash + 1);
printf("\n");
- printf("static Const unsigned short hashString[KTABLESIZE] = {\n");
+ printf("static const unsigned short hashString[KTABLESIZE] = {\n");
for (i = 0; i < z;) {
printf("0x%.4x", offsets[i]);
i++;
@@ -243,7 +240,7 @@ skip2: ;
printf("#define VTABLESIZE %d\n", z);
printf("#define VMAXHASH %d\n", best_max_rehash + 1);
printf("\n");
- printf("static Const unsigned short hashKeysym[VTABLESIZE] = {\n");
+ printf("static const unsigned short hashKeysym[VTABLESIZE] = {\n");
for (i = 0; i < z;) {
printf("0x%.4x", offsets[i]);
i++;
diff --git a/src/xcms/CCC.c b/src/xcms/CCC.c
index 9a7d5162..a9b82721 100644
--- a/src/xcms/CCC.c
+++ b/src/xcms/CCC.c
@@ -33,6 +33,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/CCC.c,v 1.4 2001/12/14 19:53:56 dawes Exp $ */
/*
@@ -68,6 +69,12 @@ from The Open Group.
extern XcmsIntensityMap *_XcmsGetIntensityMap();
+/* cmsInt.c */
+extern int _XcmsInitDefaultCCCs();
+extern int _XcmsInitScrnInfo();
+
+
+
/************************************************************************
diff --git a/src/xcms/CvColW.c b/src/xcms/CvColW.c
index 249e30e5..34be833c 100644
--- a/src/xcms/CvColW.c
+++ b/src/xcms/CvColW.c
@@ -33,10 +33,17 @@
*
*
*/
+/* $XFree86: xc/lib/X11/CvColW.c,v 1.3 2001/01/17 19:41:34 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERNS */
+/* CvCols.c */
+extern Status _XcmsDDConvertColors();
+extern Status _XcmsDIConvertColors();
+
+
/************************************************************************
* *
diff --git a/src/xcms/CvCols.c b/src/xcms/CvCols.c
index d74ea323..1c16de1c 100644
--- a/src/xcms/CvCols.c
+++ b/src/xcms/CvCols.c
@@ -33,6 +33,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/CvCols.c,v 1.3 2001/01/17 19:41:34 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -62,6 +63,7 @@ extern XcmsColorSpace **_XcmsDDColorSpaces;
*/
Status _XcmsDIConvertColors();
Status _XcmsDDConvertColors();
+int _XcmsEqualWhitePts();
/************************************************************************
diff --git a/src/xcms/HVC.c b/src/xcms/HVC.c
index 26bca265..894e8ddf 100644
--- a/src/xcms/HVC.c
+++ b/src/xcms/HVC.c
@@ -47,12 +47,15 @@
* DOCUMENTATION
* "TekColor Color Management System, System Implementor's Manual"
*/
+/* $XFree86: xc/lib/X11/HVC.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
#include <X11/Xos.h>
#include <math.h>
+#include <stdio.h>
+
/*
* DEFINES
*/
@@ -95,6 +98,12 @@
extern char _XcmsTekHVC_prefix[];
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* uvY.c */
+extern Status _XcmsCIEuvY_ValidSpec();
+
/*
* FORWARD DECLARATIONS
*/
diff --git a/src/xcms/HVCGcC.c b/src/xcms/HVCGcC.c
index 26a3f121..9260c392 100644
--- a/src/xcms/HVCGcC.c
+++ b/src/xcms/HVCGcC.c
@@ -43,6 +43,7 @@
* Source for XcmsTekHVCClipC() gamut compression routine.
*
*/
+/* $XFree86: xc/lib/X11/HVCGcC.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -53,6 +54,8 @@
extern XcmsColorSpace XcmsTekHVCColorSpace;
extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
/************************************************************************
diff --git a/src/xcms/HVCGcV.c b/src/xcms/HVCGcV.c
index 7b062123..eeb6262a 100644
--- a/src/xcms/HVCGcV.c
+++ b/src/xcms/HVCGcV.c
@@ -43,6 +43,7 @@
* Source for XcmsTekHVCClipV() gamut compression routine.
*
*/
+/* $XFree86: xc/lib/X11/HVCGcV.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -54,6 +55,14 @@ extern Status _XcmsTekHVC_CheckModify();
extern XcmsColorSpace XcmsTekHVCColorSpace;
extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* HVCMxVC.c */
+extern Status _XcmsTekHVCQueryMaxVCRGB();
+
+
+
/************************************************************************
diff --git a/src/xcms/HVCGcVC.c b/src/xcms/HVCGcVC.c
index 00d09b2a..d1cebc83 100644
--- a/src/xcms/HVCGcVC.c
+++ b/src/xcms/HVCGcVC.c
@@ -43,6 +43,7 @@
* Source for XcmsTekHVCClipVC() gamut
* compression function.
*/
+/* $XFree86: xc/lib/X11/HVCGcVC.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -63,6 +64,12 @@ extern Status _XcmsTekHVCQueryMaxVCRGB();
extern XcmsColorSpace XcmsTekHVCColorSpace;
extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/HVCMxC.c b/src/xcms/HVCMxC.c
index e7e316fe..20aa9ef9 100644
--- a/src/xcms/HVCMxC.c
+++ b/src/xcms/HVCMxC.c
@@ -44,6 +44,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/HVCMxC.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -62,6 +63,9 @@ extern Status _XcmsTekHVCQueryMaxVCRGB();
extern int _XcmsTekHVC_CheckModify();
extern XcmsColorSpace XcmsTekHVCColorSpace;
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
diff --git a/src/xcms/HVCMxV.c b/src/xcms/HVCMxV.c
index b1e70094..fec1c3b7 100644
--- a/src/xcms/HVCMxV.c
+++ b/src/xcms/HVCMxV.c
@@ -44,6 +44,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/HVCMxV.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -62,6 +63,9 @@ extern Status _XcmsTekHVCQueryMaxVCRGB();
extern int _XcmsTekHVC_CheckModify();
extern XcmsColorSpace XcmsTekHVCColorSpace;
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/HVCMxVs.c b/src/xcms/HVCMxVs.c
index 33f84b61..6f98d0d5 100644
--- a/src/xcms/HVCMxVs.c
+++ b/src/xcms/HVCMxVs.c
@@ -43,6 +43,7 @@
* Source for the XcmsTekHVCQueryMaxVSamples() gamut boundary
* querying routine.
*/
+/* $XFree86: xc/lib/X11/HVCMxVs.c,v 1.3 2001/01/17 19:41:37 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -54,6 +55,8 @@ extern Status _XcmsTekHVCQueryMaxVCRGB();
extern Status _XcmsTekHVC_CheckModify();
extern XcmsColorSpace XcmsTekHVCColorSpace;
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
/************************************************************************
diff --git a/src/xcms/LRGB.c b/src/xcms/LRGB.c
index 5b8b8068..4113b8ae 100644
--- a/src/xcms/LRGB.c
+++ b/src/xcms/LRGB.c
@@ -35,6 +35,7 @@
* 4. RGB intensity to CIE XYZ
*
*/
+/* $XFree86: xc/lib/X11/LRGB.c,v 3.5 2001/07/25 15:04:44 dawes Exp $ */
#include <stdio.h>
#include <X11/Xos.h>
@@ -42,12 +43,6 @@
#include "Xlibint.h"
#include "Xcmsint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
/*
* EXTERNS
* External declarations required locally to this package
@@ -59,6 +54,9 @@ extern char _XcmsRGBi_prefix[];
extern unsigned long _XcmsGetElement();
extern void _XcmsFreeIntensityMaps();
+/* cmsProp.c */
+extern int _XcmsGetProperty();
+
/*
* LOCAL DEFINES
@@ -101,7 +99,7 @@ Status _XcmsGetTableType1();
* static int ExampleLocalVar;
*/
-static unsigned short Const MASK[17] = {
+static unsigned short const MASK[17] = {
0x0000, /* 0 bitsPerRGB */
0x8000, /* 1 bitsPerRGB */
0xc000, /* 2 bitsPerRGB */
@@ -231,169 +229,169 @@ XcmsFunctionSet XcmsLinearRGBFunctionSet =
* MODEL Tek4300, Tek4800
*/
-static IntensityRec Const Default_RGB_RedTuples[] = {
+static IntensityRec const Default_RGB_RedTuples[] = {
/* {unsigned short value, XcmsFloat intensity} */
- 0x0000, 0.000000,
- 0x0909, 0.000000,
- 0x0a0a, 0.000936,
- 0x0f0f, 0.001481,
- 0x1414, 0.002329,
- 0x1919, 0.003529,
- 0x1e1e, 0.005127,
- 0x2323, 0.007169,
- 0x2828, 0.009699,
- 0x2d2d, 0.012759,
- 0x3232, 0.016392,
- 0x3737, 0.020637,
- 0x3c3c, 0.025533,
- 0x4141, 0.031119,
- 0x4646, 0.037431,
- 0x4b4b, 0.044504,
- 0x5050, 0.052373,
- 0x5555, 0.061069,
- 0x5a5a, 0.070624,
- 0x5f5f, 0.081070,
- 0x6464, 0.092433,
- 0x6969, 0.104744,
- 0x6e6e, 0.118026,
- 0x7373, 0.132307,
- 0x7878, 0.147610,
- 0x7d7d, 0.163958,
- 0x8282, 0.181371,
- 0x8787, 0.199871,
- 0x8c8c, 0.219475,
- 0x9191, 0.240202,
- 0x9696, 0.262069,
- 0x9b9b, 0.285089,
- 0xa0a0, 0.309278,
- 0xa5a5, 0.334647,
- 0xaaaa, 0.361208,
- 0xafaf, 0.388971,
- 0xb4b4, 0.417945,
- 0xb9b9, 0.448138,
- 0xbebe, 0.479555,
- 0xc3c3, 0.512202,
- 0xc8c8, 0.546082,
- 0xcdcd, 0.581199,
- 0xd2d2, 0.617552,
- 0xd7d7, 0.655144,
- 0xdcdc, 0.693971,
- 0xe1e1, 0.734031,
- 0xe6e6, 0.775322,
- 0xebeb, 0.817837,
- 0xf0f0, 0.861571,
- 0xf5f5, 0.906515,
- 0xfafa, 0.952662,
- 0xffff, 1.000000
+ { 0x0000, 0.000000 },
+ { 0x0909, 0.000000 },
+ { 0x0a0a, 0.000936 },
+ { 0x0f0f, 0.001481 },
+ { 0x1414, 0.002329 },
+ { 0x1919, 0.003529 },
+ { 0x1e1e, 0.005127 },
+ { 0x2323, 0.007169 },
+ { 0x2828, 0.009699 },
+ { 0x2d2d, 0.012759 },
+ { 0x3232, 0.016392 },
+ { 0x3737, 0.020637 },
+ { 0x3c3c, 0.025533 },
+ { 0x4141, 0.031119 },
+ { 0x4646, 0.037431 },
+ { 0x4b4b, 0.044504 },
+ { 0x5050, 0.052373 },
+ { 0x5555, 0.061069 },
+ { 0x5a5a, 0.070624 },
+ { 0x5f5f, 0.081070 },
+ { 0x6464, 0.092433 },
+ { 0x6969, 0.104744 },
+ { 0x6e6e, 0.118026 },
+ { 0x7373, 0.132307 },
+ { 0x7878, 0.147610 },
+ { 0x7d7d, 0.163958 },
+ { 0x8282, 0.181371 },
+ { 0x8787, 0.199871 },
+ { 0x8c8c, 0.219475 },
+ { 0x9191, 0.240202 },
+ { 0x9696, 0.262069 },
+ { 0x9b9b, 0.285089 },
+ { 0xa0a0, 0.309278 },
+ { 0xa5a5, 0.334647 },
+ { 0xaaaa, 0.361208 },
+ { 0xafaf, 0.388971 },
+ { 0xb4b4, 0.417945 },
+ { 0xb9b9, 0.448138 },
+ { 0xbebe, 0.479555 },
+ { 0xc3c3, 0.512202 },
+ { 0xc8c8, 0.546082 },
+ { 0xcdcd, 0.581199 },
+ { 0xd2d2, 0.617552 },
+ { 0xd7d7, 0.655144 },
+ { 0xdcdc, 0.693971 },
+ { 0xe1e1, 0.734031 },
+ { 0xe6e6, 0.775322 },
+ { 0xebeb, 0.817837 },
+ { 0xf0f0, 0.861571 },
+ { 0xf5f5, 0.906515 },
+ { 0xfafa, 0.952662 },
+ { 0xffff, 1.000000 }
};
-static IntensityRec Const Default_RGB_GreenTuples[] = {
+static IntensityRec const Default_RGB_GreenTuples[] = {
/* {unsigned short value, XcmsFloat intensity} */
- 0x0000, 0.000000,
- 0x1313, 0.000000,
- 0x1414, 0.000832,
- 0x1919, 0.001998,
- 0x1e1e, 0.003612,
- 0x2323, 0.005736,
- 0x2828, 0.008428,
- 0x2d2d, 0.011745,
- 0x3232, 0.015740,
- 0x3737, 0.020463,
- 0x3c3c, 0.025960,
- 0x4141, 0.032275,
- 0x4646, 0.039449,
- 0x4b4b, 0.047519,
- 0x5050, 0.056520,
- 0x5555, 0.066484,
- 0x5a5a, 0.077439,
- 0x5f5f, 0.089409,
- 0x6464, 0.102418,
- 0x6969, 0.116485,
- 0x6e6e, 0.131625,
- 0x7373, 0.147853,
- 0x7878, 0.165176,
- 0x7d7d, 0.183604,
- 0x8282, 0.203140,
- 0x8787, 0.223783,
- 0x8c8c, 0.245533,
- 0x9191, 0.268384,
- 0x9696, 0.292327,
- 0x9b9b, 0.317351,
- 0xa0a0, 0.343441,
- 0xa5a5, 0.370580,
- 0xaaaa, 0.398747,
- 0xafaf, 0.427919,
- 0xb4b4, 0.458068,
- 0xb9b9, 0.489165,
- 0xbebe, 0.521176,
- 0xc3c3, 0.554067,
- 0xc8c8, 0.587797,
- 0xcdcd, 0.622324,
- 0xd2d2, 0.657604,
- 0xd7d7, 0.693588,
- 0xdcdc, 0.730225,
- 0xe1e1, 0.767459,
- 0xe6e6, 0.805235,
- 0xebeb, 0.843491,
- 0xf0f0, 0.882164,
- 0xf5f5, 0.921187,
- 0xfafa, 0.960490,
- 0xffff, 1.000000
+ { 0x0000, 0.000000 },
+ { 0x1313, 0.000000 },
+ { 0x1414, 0.000832 },
+ { 0x1919, 0.001998 },
+ { 0x1e1e, 0.003612 },
+ { 0x2323, 0.005736 },
+ { 0x2828, 0.008428 },
+ { 0x2d2d, 0.011745 },
+ { 0x3232, 0.015740 },
+ { 0x3737, 0.020463 },
+ { 0x3c3c, 0.025960 },
+ { 0x4141, 0.032275 },
+ { 0x4646, 0.039449 },
+ { 0x4b4b, 0.047519 },
+ { 0x5050, 0.056520 },
+ { 0x5555, 0.066484 },
+ { 0x5a5a, 0.077439 },
+ { 0x5f5f, 0.089409 },
+ { 0x6464, 0.102418 },
+ { 0x6969, 0.116485 },
+ { 0x6e6e, 0.131625 },
+ { 0x7373, 0.147853 },
+ { 0x7878, 0.165176 },
+ { 0x7d7d, 0.183604 },
+ { 0x8282, 0.203140 },
+ { 0x8787, 0.223783 },
+ { 0x8c8c, 0.245533 },
+ { 0x9191, 0.268384 },
+ { 0x9696, 0.292327 },
+ { 0x9b9b, 0.317351 },
+ { 0xa0a0, 0.343441 },
+ { 0xa5a5, 0.370580 },
+ { 0xaaaa, 0.398747 },
+ { 0xafaf, 0.427919 },
+ { 0xb4b4, 0.458068 },
+ { 0xb9b9, 0.489165 },
+ { 0xbebe, 0.521176 },
+ { 0xc3c3, 0.554067 },
+ { 0xc8c8, 0.587797 },
+ { 0xcdcd, 0.622324 },
+ { 0xd2d2, 0.657604 },
+ { 0xd7d7, 0.693588 },
+ { 0xdcdc, 0.730225 },
+ { 0xe1e1, 0.767459 },
+ { 0xe6e6, 0.805235 },
+ { 0xebeb, 0.843491 },
+ { 0xf0f0, 0.882164 },
+ { 0xf5f5, 0.921187 },
+ { 0xfafa, 0.960490 },
+ { 0xffff, 1.000000 }
};
-static IntensityRec Const Default_RGB_BlueTuples[] = {
+static IntensityRec const Default_RGB_BlueTuples[] = {
/* {unsigned short value, XcmsFloat intensity} */
- 0x0000, 0.000000,
- 0x0e0e, 0.000000,
- 0x0f0f, 0.001341,
- 0x1414, 0.002080,
- 0x1919, 0.003188,
- 0x1e1e, 0.004729,
- 0x2323, 0.006766,
- 0x2828, 0.009357,
- 0x2d2d, 0.012559,
- 0x3232, 0.016424,
- 0x3737, 0.021004,
- 0x3c3c, 0.026344,
- 0x4141, 0.032489,
- 0x4646, 0.039481,
- 0x4b4b, 0.047357,
- 0x5050, 0.056154,
- 0x5555, 0.065903,
- 0x5a5a, 0.076634,
- 0x5f5f, 0.088373,
- 0x6464, 0.101145,
- 0x6969, 0.114968,
- 0x6e6e, 0.129862,
- 0x7373, 0.145841,
- 0x7878, 0.162915,
- 0x7d7d, 0.181095,
- 0x8282, 0.200386,
- 0x8787, 0.220791,
- 0x8c8c, 0.242309,
- 0x9191, 0.264937,
- 0x9696, 0.288670,
- 0x9b9b, 0.313499,
- 0xa0a0, 0.339410,
- 0xa5a5, 0.366390,
- 0xaaaa, 0.394421,
- 0xafaf, 0.423481,
- 0xb4b4, 0.453547,
- 0xb9b9, 0.484592,
- 0xbebe, 0.516587,
- 0xc3c3, 0.549498,
- 0xc8c8, 0.583291,
- 0xcdcd, 0.617925,
- 0xd2d2, 0.653361,
- 0xd7d7, 0.689553,
- 0xdcdc, 0.726454,
- 0xe1e1, 0.764013,
- 0xe6e6, 0.802178,
- 0xebeb, 0.840891,
- 0xf0f0, 0.880093,
- 0xf5f5, 0.919723,
- 0xfafa, 0.959715,
- 0xffff, 1.00000
+ { 0x0000, 0.000000 },
+ { 0x0e0e, 0.000000 },
+ { 0x0f0f, 0.001341 },
+ { 0x1414, 0.002080 },
+ { 0x1919, 0.003188 },
+ { 0x1e1e, 0.004729 },
+ { 0x2323, 0.006766 },
+ { 0x2828, 0.009357 },
+ { 0x2d2d, 0.012559 },
+ { 0x3232, 0.016424 },
+ { 0x3737, 0.021004 },
+ { 0x3c3c, 0.026344 },
+ { 0x4141, 0.032489 },
+ { 0x4646, 0.039481 },
+ { 0x4b4b, 0.047357 },
+ { 0x5050, 0.056154 },
+ { 0x5555, 0.065903 },
+ { 0x5a5a, 0.076634 },
+ { 0x5f5f, 0.088373 },
+ { 0x6464, 0.101145 },
+ { 0x6969, 0.114968 },
+ { 0x6e6e, 0.129862 },
+ { 0x7373, 0.145841 },
+ { 0x7878, 0.162915 },
+ { 0x7d7d, 0.181095 },
+ { 0x8282, 0.200386 },
+ { 0x8787, 0.220791 },
+ { 0x8c8c, 0.242309 },
+ { 0x9191, 0.264937 },
+ { 0x9696, 0.288670 },
+ { 0x9b9b, 0.313499 },
+ { 0xa0a0, 0.339410 },
+ { 0xa5a5, 0.366390 },
+ { 0xaaaa, 0.394421 },
+ { 0xafaf, 0.423481 },
+ { 0xb4b4, 0.453547 },
+ { 0xb9b9, 0.484592 },
+ { 0xbebe, 0.516587 },
+ { 0xc3c3, 0.549498 },
+ { 0xc8c8, 0.583291 },
+ { 0xcdcd, 0.617925 },
+ { 0xd2d2, 0.653361 },
+ { 0xd7d7, 0.689553 },
+ { 0xdcdc, 0.726454 },
+ { 0xe1e1, 0.764013 },
+ { 0xe6e6, 0.802178 },
+ { 0xebeb, 0.840891 },
+ { 0xf0f0, 0.880093 },
+ { 0xf5f5, 0.919723 },
+ { 0xfafa, 0.959715 },
+ { 0xffff, 1.00000 }
};
static IntensityTbl Default_RGB_RedTbl = {
@@ -418,16 +416,19 @@ static IntensityTbl Default_RGB_BlueTbl = {
};
static LINEAR_RGB_SCCData Default_RGB_SCCData = {
-
/* XcmsFloat XYZtoRGBmatrix[3][3] */
- 3.48340481253539000, -1.52176374927285200, -0.55923133354049780,
- -1.07152751306193600, 1.96593795204372400, 0.03673691339553462,
- 0.06351179790497788, -0.20020501000496480, 0.81070942031648220,
+ {
+ { 3.48340481253539000, -1.52176374927285200, -0.55923133354049780 },
+ {-1.07152751306193600, 1.96593795204372400, 0.03673691339553462 },
+ { 0.06351179790497788, -0.20020501000496480, 0.81070942031648220 }
+ },
/* XcmsFloat RGBtoXYZmatrix[3][3] */
- 0.38106149108714790, 0.32025712365352110, 0.24834578525933100,
- 0.20729745115140850, 0.68054638776373240, 0.11215616108485920,
- 0.02133944350088028, 0.14297193020246480, 1.24172892629665500,
+ {
+ { 0.38106149108714790, 0.32025712365352110, 0.24834578525933100 },
+ { 0.20729745115140850, 0.68054638776373240, 0.11215616108485920 },
+ { 0.02133944350088028, 0.14297193020246480, 1.24172892629665500 }
+ },
/* IntensityTbl *pRedTbl */
&Default_RGB_RedTbl,
diff --git a/src/xcms/Lab.c b/src/xcms/Lab.c
index 7827d8e7..b33ba712 100644
--- a/src/xcms/Lab.c
+++ b/src/xcms/Lab.c
@@ -36,9 +36,11 @@
*
* Note that the range for L* is 0 to 1.
*/
+/* $XFree86: xc/lib/X11/Lab.c,v 1.3 2001/01/17 19:41:38 dawes Exp $ */
#include <X11/Xos.h>
+#include <stdio.h> /* sscanf */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -59,6 +61,11 @@
*/
extern char _XcmsCIELab_prefix[];
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* XYZ.c */
+extern Status _XcmsCIEXYZ_ValidSpec();
/*
* FORWARD DECLARATIONS
diff --git a/src/xcms/LabGcC.c b/src/xcms/LabGcC.c
index 0618dcbb..a2349671 100644
--- a/src/xcms/LabGcC.c
+++ b/src/xcms/LabGcC.c
@@ -30,10 +30,13 @@
* Source for XcmsCIELabClipuv() gamut compression routine.
*
*/
+/* $XFree86: xc/lib/X11/LabGcC.c,v 1.3 2001/01/17 19:41:38 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+extern Status _XcmsDIConvertColors();
+
/************************************************************************
* *
diff --git a/src/xcms/LabGcL.c b/src/xcms/LabGcL.c
index bc6d20ef..4dc64a94 100644
--- a/src/xcms/LabGcL.c
+++ b/src/xcms/LabGcL.c
@@ -30,6 +30,7 @@
* Source for XcmsCIELabClipL() gamut compression routine.
*
*/
+/* $XFree86: xc/lib/X11/LabGcL.c,v 1.3 2001/01/17 19:41:38 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -39,6 +40,9 @@
*/
extern Status _XcmsCIELabQueryMaxLCRGB();
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
/************************************************************************
* *
diff --git a/src/xcms/LabGcLC.c b/src/xcms/LabGcLC.c
index 8ffaf8c3..d48972de 100644
--- a/src/xcms/LabGcLC.c
+++ b/src/xcms/LabGcLC.c
@@ -30,6 +30,7 @@
* Source for XcmsCIELabClipLab() gamut
* compression function.
*/
+/* $XFree86: xc/lib/X11/LabGcLC.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -47,6 +48,12 @@
*/
extern Status _XcmsCIELabQueryMaxLCRGB();
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/LabMnL.c b/src/xcms/LabMnL.c
index c5ca3e8e..b6163842 100644
--- a/src/xcms/LabMnL.c
+++ b/src/xcms/LabMnL.c
@@ -31,6 +31,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/LabMnL.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -48,6 +49,9 @@
*/
extern Status _XcmsCIELabQueryMaxLCRGB();
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/LabMxC.c b/src/xcms/LabMxC.c
index a1a3d69d..53e5c2e2 100644
--- a/src/xcms/LabMxC.c
+++ b/src/xcms/LabMxC.c
@@ -33,6 +33,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/LabMxC.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -51,6 +52,9 @@
*/
extern Status _XcmsCIELabQueryMaxLCRGB();
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/LabMxL.c b/src/xcms/LabMxL.c
index a31a8f41..8022a7d3 100644
--- a/src/xcms/LabMxL.c
+++ b/src/xcms/LabMxL.c
@@ -31,6 +31,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/LabMxL.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -48,6 +49,9 @@
*/
extern Status _XcmsCIELabQueryMaxLCRGB();
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/Luv.c b/src/xcms/Luv.c
index 9cb56cfd..9569db03 100644
--- a/src/xcms/Luv.c
+++ b/src/xcms/Luv.c
@@ -38,17 +38,26 @@
* Fred W. Billmeyer & Max Saltzman, "Principles of Color
* Technology", John Wily & Sons, Inc, 1981.
*/
+/* $XFree86: xc/lib/X11/Luv.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include <X11/Xos.h>
#include "Xlibint.h"
#include "Xcmsint.h"
+#include <stdio.h> /* sscanf */
+
/*
* EXTERNS
*/
extern char _XcmsCIELuv_prefix[];
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* uvY.c */
+Status _XcmsCIEuvY_ValidSpec();
+
/*
* FORWARD DECLARATIONS
diff --git a/src/xcms/LuvGcC.c b/src/xcms/LuvGcC.c
index fa3b3f11..67da68a6 100644
--- a/src/xcms/LuvGcC.c
+++ b/src/xcms/LuvGcC.c
@@ -30,10 +30,16 @@
* Source for XcmsCIELuvClipuv() gamut compression routine.
*
*/
+/* $XFree86: xc/lib/X11/LuvGcC.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERNS */
+
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
/************************************************************************
* *
diff --git a/src/xcms/LuvGcL.c b/src/xcms/LuvGcL.c
index 32d09bdb..1ae8513b 100644
--- a/src/xcms/LuvGcL.c
+++ b/src/xcms/LuvGcL.c
@@ -30,6 +30,7 @@
* Source for XcmsCIELuvClipL() gamut compression routine.
*
*/
+/* $XFree86: xc/lib/X11/LuvGcL.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -39,6 +40,9 @@
*/
extern Status _XcmsCIELuvQueryMaxLCRGB();
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
/************************************************************************
* *
diff --git a/src/xcms/LuvGcLC.c b/src/xcms/LuvGcLC.c
index 376f5f40..7db28f7f 100644
--- a/src/xcms/LuvGcLC.c
+++ b/src/xcms/LuvGcLC.c
@@ -30,6 +30,7 @@
* Source for XcmsCIELuvClipLuv() gamut
* compression function.
*/
+/* $XFree86: xc/lib/X11/LuvGcLC.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -47,6 +48,12 @@
*/
extern Status _XcmsCIELuvQueryMaxLCRGB();
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/LuvMnL.c b/src/xcms/LuvMnL.c
index c687037d..c9e27eb1 100644
--- a/src/xcms/LuvMnL.c
+++ b/src/xcms/LuvMnL.c
@@ -31,6 +31,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/LuvMnL.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -48,6 +49,9 @@
*/
extern Status _XcmsCIELuvQueryMaxLCRGB();
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/LuvMxC.c b/src/xcms/LuvMxC.c
index 100a3b9e..b3ede840 100644
--- a/src/xcms/LuvMxC.c
+++ b/src/xcms/LuvMxC.c
@@ -33,6 +33,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/LuvMxC.c,v 1.3 2001/01/17 19:41:39 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -50,6 +51,9 @@
*/
extern Status _XcmsCIELuvQueryMaxLCRGB();
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/LuvMxL.c b/src/xcms/LuvMxL.c
index 7925b010..932bc011 100644
--- a/src/xcms/LuvMxL.c
+++ b/src/xcms/LuvMxL.c
@@ -31,6 +31,7 @@
* querying routine.
*
*/
+/* $XFree86: xc/lib/X11/LuvMxL.c,v 1.3 2001/01/17 19:41:40 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -48,6 +49,9 @@
*/
extern Status _XcmsCIELuvQueryMaxLCRGB();
+/* CvColW.c */
+extern Status _XcmsConvertColorsWithWhitePt();
+
/************************************************************************
* *
diff --git a/src/xcms/QuCol.c b/src/xcms/QuCol.c
index d632d457..0df0e66c 100644
--- a/src/xcms/QuCol.c
+++ b/src/xcms/QuCol.c
@@ -32,10 +32,15 @@
*
*
*/
+/* $XFree86: xc/lib/X11/QuCol.c,v 1.3 2001/01/17 19:41:42 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERN */
+
+/* SetGetCols.c */
+extern Status _XcmsSetGetColors();
/************************************************************************
diff --git a/src/xcms/QuCols.c b/src/xcms/QuCols.c
index 9a35cf05..c857e46b 100644
--- a/src/xcms/QuCols.c
+++ b/src/xcms/QuCols.c
@@ -32,10 +32,16 @@
*
*
*/
+/* $XFree86: xc/lib/X11/QuCols.c,v 1.3 2001/01/17 19:41:42 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERNS */
+
+/* SetGetCols.c */
+extern Status _XcmsSetGetColors();
+
/************************************************************************
* *
diff --git a/src/xcms/StCol.c b/src/xcms/StCol.c
index b6229f98..54676862 100644
--- a/src/xcms/StCol.c
+++ b/src/xcms/StCol.c
@@ -32,10 +32,16 @@
*
*
*/
+/* $XFree86: xc/lib/X11/StCol.c,v 1.3 2001/01/17 19:41:44 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERN */
+
+/* SetGetCols.c */
+extern Status _XcmsSetGetColors();
+
/************************************************************************
* *
diff --git a/src/xcms/StCols.c b/src/xcms/StCols.c
index 1e833c34..d35bd336 100644
--- a/src/xcms/StCols.c
+++ b/src/xcms/StCols.c
@@ -32,10 +32,16 @@
*
*
*/
+/* $XFree86: xc/lib/X11/StCols.c,v 1.3 2001/01/17 19:41:44 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERN */
+
+/* SetGetCols.c */
+extern Status _XcmsSetGetColors();
+
/************************************************************************
* *
diff --git a/src/xcms/XRGB.c b/src/xcms/XRGB.c
index 7e5b7f84..c4985a3a 100644
--- a/src/xcms/XRGB.c
+++ b/src/xcms/XRGB.c
@@ -33,21 +33,16 @@
*
*
*/
+/* $XFree86: xc/lib/X11/XRGB.c,v 3.3 2001/07/29 05:01:11 tsi Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
/*
* LOCAL VARIABLES
*/
-static unsigned short Const MASK[17] = {
+static unsigned short const MASK[17] = {
0x0000, /* 0 bitsPerRGB */
0x8000, /* 1 bitsPerRGB */
0xc000, /* 2 bitsPerRGB */
diff --git a/src/xcms/XYZ.c b/src/xcms/XYZ.c
index a06b2132..55040cb6 100644
--- a/src/xcms/XYZ.c
+++ b/src/xcms/XYZ.c
@@ -33,11 +33,14 @@
*
*
*/
+/* $XFree86: xc/lib/X11/XYZ.c,v 1.3 2001/01/17 19:41:49 dawes Exp $ */
#include <X11/Xos.h>
#include "Xlibint.h"
#include "Xcmsint.h"
+#include <stdio.h> /* sscanf */
+
/*
* EXTERNS
diff --git a/src/xcms/Xcms.txt b/src/xcms/Xcms.txt
index c27fd8f4..25b81498 100644
--- a/src/xcms/Xcms.txt
+++ b/src/xcms/Xcms.txt
@@ -25,6 +25,7 @@
* DESCRIPTION
* Sample Color Name Database
*
+ * $XFree86: xc/lib/X11/Xcms.txt,v 3.2 2003/02/13 03:40:54 dawes Exp $
*/
@@ -38,24 +39,7 @@ version number of the format/syntax used in this file. The color name is
delimited from the color specification by one or more tabs.
XCMS_COLORDB_START 0.1
-red CIEXYZ:0.371298/0.201443/0.059418
-green CIEXYZ:0.321204/0.660070/0.159833
-blue CIEXYZ:0.279962/0.160195/1.210705
-aquamarine CIEXYZ:0.34672401/0.54832153/0.44658871
-cadet blue CIEXYZ:0.22601070/0.28905571/0.47233452
-cornflower blue CIEXYZ:0.05658276/0.04476296/0.17063955
-navy blue CIEXYZ:0.06713718/0.03366278/0.31293880
-navy CIEXYZ:0.06713718/0.03366278/0.31293880
-brown CIEXYZ:0.08443233/0.06011398/0.01840693
-gray0 TekHVC:0.0/0.0/0.0
-gray10 TekHVC:0.0/10.0/0.0
-gray20 TekHVC:0.0/20.0/0.0
-gray30 TekHVC:0.0/30.0/0.0
-gray40 TekHVC:0.0/40.0/0.0
-gray50 TekHVC:0.0/50.0/0.0
-gray60 TekHVC:0.0/60.0/0.0
-gray70 TekHVC:0.0/70.0/0.0
-gray80 TekHVC:0.0/80.0/0.0
-gray90 TekHVC:0.0/90.0/0.0
-gray100 TekHVC:0.0/100.0/0.0
+cms red CIEXYZ:0.3811/0.2073/0.0213
+cms green CIEXYZ:0.3203/0.6805/0.1430
+cms blue CIEXYZ:0.2483/0.1122/1.2417
XCMS_COLORDB_END
diff --git a/src/xcms/Xcmsint.h b/src/xcms/Xcmsint.h
index 68cd1b7b..5e14195b 100644
--- a/src/xcms/Xcmsint.h
+++ b/src/xcms/Xcmsint.h
@@ -29,6 +29,8 @@
* (i.e., for API internal use only)
*
*/
+/* $XFree86: xc/lib/X11/Xcmsint.h,v 3.3 2001/07/25 15:04:44 dawes Exp $ */
+
#ifndef _XCMSINT_H_
#define _XCMSINT_H_
@@ -117,7 +119,7 @@ typedef struct _XcmsIntensityMap {
* Structure for storing "registered" color space prefix/ID
*/
typedef struct _XcmsRegColorSpaceEntry {
- char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
+ const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */
} XcmsRegColorSpaceEntry;
@@ -194,19 +196,11 @@ typedef struct {
#define XCMS_SQRT(x) _XcmsSquareRoot(x)
#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x))
-#ifdef __STDC__
double _XcmsArcTangent(double a);
double _XcmsCosine(double a);
double _XcmsCubeRoot(double a);
double _XcmsSine(double a);
double _XcmsSquareRoot(double a);
-#else
-double _XcmsArcTangent();
-double _XcmsCosine();
-double _XcmsCubeRoot();
-double _XcmsSine();
-double _XcmsSquareRoot();
-#endif
/*
* DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES
diff --git a/src/xcms/cmsAllCol.c b/src/xcms/cmsAllCol.c
index b631064b..3cfce496 100644
--- a/src/xcms/cmsAllCol.c
+++ b/src/xcms/cmsAllCol.c
@@ -32,10 +32,16 @@
*
*
*/
+/* $XFree86: xc/lib/X11/cmsAllCol.c,v 1.3 2001/01/17 19:41:50 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
+/* EXTERNS */
+
+/* SetGetCols.c */
+extern Status _XcmsSetGetColors();
+
/*
* NAME
diff --git a/src/xcms/cmsAllNCol.c b/src/xcms/cmsAllNCol.c
index 960173f8..2d5e46e6 100644
--- a/src/xcms/cmsAllNCol.c
+++ b/src/xcms/cmsAllNCol.c
@@ -32,6 +32,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/cmsAllNCol.c,v 1.3 2001/01/17 19:41:50 dawes Exp $ */
#define NEED_REPLIES
#include <stdio.h>
@@ -44,6 +45,9 @@
extern void _XColor_to_XcmsRGB();
extern void _XcmsRGB_to_XColor();
+/* cmsColNm.c */
+extern Status _XcmsResolveColorString();
+
/*
* NAME
diff --git a/src/xcms/cmsColNm.c b/src/xcms/cmsColNm.c
index e4a9fc90..e65faf98 100644
--- a/src/xcms/cmsColNm.c
+++ b/src/xcms/cmsColNm.c
@@ -31,6 +31,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/cmsColNm.c,v 3.10 2002/05/31 18:45:42 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -48,15 +49,18 @@
* that are not already declared in any of the included header
* files (external includes or internal includes).
*/
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-extern void qsort();
-extern char *bsearch();
-#endif
extern XcmsColorSpace **_XcmsDIColorSpaces;
+
+/* CvCols.c */
+extern Status _XcmsDDConvertColors();
+extern int _XcmsEqualWhitePts();
+extern Status _XcmsDIConvertColors();
+
+
static Status LoadColornameDB();
void _XcmsCopyISOLatin1Lowered();
+
/*
* LOCAL DEFINES
* #define declarations local to this package.
@@ -89,8 +93,8 @@ void _XcmsCopyISOLatin1Lowered();
* LOCAL TYPEDEFS
*/
typedef struct _XcmsPair {
- char *first;
- char *second;
+ const char *first;
+ const char *second;
int flag;
} XcmsPair;
@@ -101,7 +105,7 @@ static int XcmsColorDbState = XcmsDbInitNone;
static int nEntries;
static char *strings;
static XcmsPair *pairs;
-static char whitePtStr[] = "WhitePoint";
+static const char whitePtStr[] = "WhitePoint";
/************************************************************************
@@ -119,7 +123,7 @@ static char whitePtStr[] = "WhitePoint";
static XcmsColorSpace *
_XcmsColorSpaceOfString(ccc, color_string)
XcmsCCC ccc;
- char *color_string;
+ const char *color_string;
/*
* DESCRIPTION
* Returns a pointer to the color space structure
@@ -187,7 +191,7 @@ _XcmsColorSpaceOfString(ccc, color_string)
static int
_XcmsParseColorString(ccc, color_string, pColor)
XcmsCCC ccc;
- char *color_string;
+ const char *color_string;
XcmsColor *pColor;
/*
* DESCRIPTION
@@ -251,11 +255,7 @@ _XcmsParseColorString(ccc, color_string, pColor)
*/
static int
FirstCmp(p1, p2)
-#ifdef __STDC__
const void *p1, *p2;
-#else
- XcmsPair *p1, *p2;
-#endif
/*
* DESCRIPTION
* Compares the color names of XcmsColorTuples.
@@ -381,7 +381,7 @@ field2(pBuf, delim, p1, p2)
static Status
_XcmsLookupColorName(ccc, name, pColor)
XcmsCCC ccc;
- char **name;
+ const char **name;
XcmsColor *pColor;
/*
* DESCRIPTION
@@ -403,8 +403,8 @@ _XcmsLookupColorName(ccc, name, pColor)
char *name_lowered;
register int i, j, left, right;
int len;
- char *tmpName;
- XcmsPair *pair;
+ const char *tmpName;
+ XcmsPair *pair = NULL;
/*
* Check state of Database:
@@ -729,6 +729,9 @@ LoadColornameDB()
if ((pathname = getenv("XCMSDB")) == NULL) {
pathname = XCMSDB;
}
+#ifdef __UNIXOS2__
+ pathname = __XOS2RedirRoot(pathname);
+#endif
length = strlen(pathname);
if ((length == 0) || (length >= (BUFSIZ - 5))){
@@ -779,7 +782,8 @@ LoadColornameDB()
*/
void
_XcmsCopyISOLatin1Lowered(dst, src)
- char *dst, *src;
+ char *dst;
+ const char *src;
/*
* DESCRIPTION
* ISO Latin-1 case conversion routine
@@ -794,9 +798,10 @@ _XcmsCopyISOLatin1Lowered(dst, src)
*
*/
{
- register unsigned char *dest, *source;
+ register unsigned char *dest;
+ register const unsigned char *source;
- for (dest = (unsigned char *)dst, source = (unsigned char *)src;
+ for (dest = (unsigned char *)dst, source = (const unsigned char *)src;
*source;
source++, dest++)
{
@@ -823,14 +828,14 @@ _XcmsCopyISOLatin1Lowered(dst, src)
Status
_XcmsResolveColorString (
XcmsCCC ccc,
- _Xconst char **color_string,
+ const char **color_string,
XcmsColor *pColor_exact_return,
XcmsColorFormat result_format)
#else
Status
_XcmsResolveColorString(ccc, color_string, pColor_exact_return, result_format)
XcmsCCC ccc;
- char **color_string;
+ const char **color_string;
XcmsColor *pColor_exact_return;
XcmsColorFormat result_format;
#endif
@@ -861,7 +866,7 @@ _XcmsResolveColorString(ccc, color_string, pColor_exact_return, result_format)
/* the screen's white point */
XcmsColor *pClientWhitePt;
int retval;
- char *strptr = whitePtStr;
+ const char *strptr = whitePtStr;
/*
* 0. Check for invalid arguments.
diff --git a/src/xcms/cmsGlobls.c b/src/xcms/cmsGlobls.c
index deeea982..accb6d85 100644
--- a/src/xcms/cmsGlobls.c
+++ b/src/xcms/cmsGlobls.c
@@ -32,6 +32,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/cmsGlobls.c,v 1.4 2001/01/17 19:41:51 dawes Exp $ */
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -135,26 +136,26 @@ XcmsFunctionSet **_XcmsSCCFuncSets = _XcmsSCCFuncSetsInit;
* X Consortium Registered Device-Independent Color Spaces
* Note that prefix must be in lowercase.
*/
-char _XcmsCIEXYZ_prefix[] = "ciexyz";
-char _XcmsCIEuvY_prefix[] = "cieuvy";
-char _XcmsCIExyY_prefix[] = "ciexyy";
-char _XcmsCIELab_prefix[] = "cielab";
-char _XcmsCIELuv_prefix[] = "cieluv";
-char _XcmsTekHVC_prefix[] = "tekhvc";
+const char _XcmsCIEXYZ_prefix[] = "ciexyz";
+const char _XcmsCIEuvY_prefix[] = "cieuvy";
+const char _XcmsCIExyY_prefix[] = "ciexyy";
+const char _XcmsCIELab_prefix[] = "cielab";
+const char _XcmsCIELuv_prefix[] = "cieluv";
+const char _XcmsTekHVC_prefix[] = "tekhvc";
/*
* Registered Device-Dependent Color Spaces
*/
-char _XcmsRGBi_prefix[] = "rgbi";
-char _XcmsRGB_prefix[] = "rgb";
+const char _XcmsRGBi_prefix[] = "rgbi";
+const char _XcmsRGB_prefix[] = "rgb";
XcmsRegColorSpaceEntry _XcmsRegColorSpaces[] = {
- _XcmsCIEXYZ_prefix, XcmsCIEXYZFormat,
- _XcmsCIEuvY_prefix, XcmsCIEuvYFormat,
- _XcmsCIExyY_prefix, XcmsCIExyYFormat,
- _XcmsCIELab_prefix, XcmsCIELabFormat,
- _XcmsCIELuv_prefix, XcmsCIELuvFormat,
- _XcmsTekHVC_prefix, XcmsTekHVCFormat,
- _XcmsRGB_prefix, XcmsRGBFormat,
- _XcmsRGBi_prefix, XcmsRGBiFormat,
- NULL, 0
+ { _XcmsCIEXYZ_prefix, XcmsCIEXYZFormat },
+ { _XcmsCIEuvY_prefix, XcmsCIEuvYFormat },
+ { _XcmsCIExyY_prefix, XcmsCIExyYFormat },
+ { _XcmsCIELab_prefix, XcmsCIELabFormat },
+ { _XcmsCIELuv_prefix, XcmsCIELuvFormat },
+ { _XcmsTekHVC_prefix, XcmsTekHVCFormat },
+ { _XcmsRGB_prefix, XcmsRGBFormat },
+ { _XcmsRGBi_prefix, XcmsRGBiFormat },
+ { NULL, 0 }
};
diff --git a/src/xcms/cmsInt.c b/src/xcms/cmsInt.c
index b70e2c08..cf492a53 100644
--- a/src/xcms/cmsInt.c
+++ b/src/xcms/cmsInt.c
@@ -34,6 +34,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/cmsInt.c,v 1.3 2001/01/17 19:41:51 dawes Exp $ */
/* #define NEED_EVENTS */
#include <stdio.h>
@@ -50,6 +51,9 @@
extern XcmsColorSpace **_XcmsDIColorSpaces;
extern XcmsFunctionSet **_XcmsSCCFuncSets;
+/* LRGB.c */
+extern int _XcmsLRGB_InitScrnDefault();
+
static void _XcmsFreeDefaultCCCs();
/*
diff --git a/src/xcms/cmsLkCol.c b/src/xcms/cmsLkCol.c
index eb9669ff..16704e46 100644
--- a/src/xcms/cmsLkCol.c
+++ b/src/xcms/cmsLkCol.c
@@ -32,6 +32,7 @@
*
*
*/
+/* $XFree86: xc/lib/X11/cmsLkCol.c,v 1.4 2001/07/25 15:04:44 dawes Exp $ */
#define NEED_REPLIES
#include <stdio.h>
@@ -45,9 +46,10 @@ extern void _XColor_to_XcmsRGB();
extern void _XcmsRGB_to_XColor();
extern void _XcmsResolveColor();
extern void _XcmsUnresolveColor();
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
+
+/* cmsColNm.c */
+extern Status _XcmsResolveColorString();
+
/*
* NAME
diff --git a/src/xcms/cmsMath.c b/src/xcms/cmsMath.c
index fd09cec1..ce8f7493 100644
--- a/src/xcms/cmsMath.c
+++ b/src/xcms/cmsMath.c
@@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/lib/X11/cmsMath.c,v 3.5 2001/12/14 19:54:10 dawes Exp $ */
/*
* Stephen Gildea, MIT X Consortium, January 1991
@@ -33,9 +34,7 @@ in this Software without prior written authorization from The Open Group.
#include "Xlibint.h"
#include "Xcmsint.h"
-#if !defined(X_NOT_STDC_ENV) && (defined(__STDC__) || !(defined(sun) || (defined(sony) && !defined(SYSTYPE_SYSV) && !defined(_SYSTYPE_SYSV))))
#include <float.h>
-#endif
#ifndef DBL_EPSILON
#define DBL_EPSILON 1e-6
#endif
diff --git a/src/xcms/cmsTrig.c b/src/xcms/cmsTrig.c
index a1e9b50c..4db44566 100644
--- a/src/xcms/cmsTrig.c
+++ b/src/xcms/cmsTrig.c
@@ -24,6 +24,7 @@
* CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
*/
+/* $XFree86: xc/lib/X11/cmsTrig.c,v 3.8 2001/10/28 03:32:34 tsi Exp $ */
/*
* It should be pointed out that for simplicity's sake, the
* environment parameters are defined as floating point constants,
@@ -63,11 +64,6 @@ double _XcmsArcTangent();
* DEFINES
*/
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
#define XCMS_MAXERROR 0.000001
#define XCMS_MAXITER 10000
#define XCMS_PI 3.14159265358979323846264338327950
@@ -90,35 +86,35 @@ double _XcmsArcTangent();
#define XCMS_DMAXPOWTWO ((double)(1 < 47))
#else
#define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \
- (1L << (XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(long) + 1))
+ (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1)))
#endif
/*
* LOCAL VARIABLES
*/
-static double Const cos_pcoeffs[] = {
+static double const cos_pcoeffs[] = {
0.12905394659037374438e7,
-0.37456703915723204710e6,
0.13432300986539084285e5,
-0.11231450823340933092e3
};
-static double Const cos_qcoeffs[] = {
+static double const cos_qcoeffs[] = {
0.12905394659037373590e7,
0.23467773107245835052e5,
0.20969518196726306286e3,
1.0
};
-static double Const sin_pcoeffs[] = {
+static double const sin_pcoeffs[] = {
0.20664343336995858240e7,
-0.18160398797407332550e6,
0.35999306949636188317e4,
-0.20107483294588615719e2
};
-static double Const sin_qcoeffs[] = {
+static double const sin_qcoeffs[] = {
0.26310659102647698963e7,
0.39270242774649000308e5,
0.27811919481083844087e3,
@@ -321,7 +317,11 @@ double val;
register double *dp;
{
register double abs;
- register double ip;
+ /*
+ * Don't use a register for this. The extra precision this results
+ * in on some systems causes problems.
+ */
+ double ip;
/* should check for illegal values here - nan, inf, etc */
abs = XCMS_FABS(val);
@@ -379,7 +379,7 @@ register double *dp;
static double _XcmsPolynomial (order, coeffs, x)
register int order;
-double Const *coeffs;
+double const *coeffs;
double x;
{
auto double rtn_value;
@@ -567,7 +567,7 @@ _XcmsArcTangent(x)
* Returns the arctangent
*/
{
- double ai, a1, bi, b1, l, d;
+ double ai, a1 = 0.0, bi, b1 = 0.0, l, d;
double maxerror;
int i;
diff --git a/src/xcms/uvY.c b/src/xcms/uvY.c
index 3438d88d..a0509f39 100644
--- a/src/xcms/uvY.c
+++ b/src/xcms/uvY.c
@@ -35,17 +35,26 @@
* DOCUMENTATION
* "TekColor Color Management System, System Implementor's Manual"
*/
+/* $XFree86: xc/lib/X11/uvY.c,v 1.3 2001/01/17 19:41:57 dawes Exp $ */
#include <X11/Xos.h>
#include "Xlibint.h"
#include "Xcmsint.h"
+#include <stdio.h>
+
/*
* EXTERNS
*/
extern char _XcmsCIEuvY_prefix[];
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* XYZ.c */
+extern Status _XcmsCIEXYZ_ValidSpec();
+
/*
* FORWARD DECLARATIONS
diff --git a/src/xcms/xyY.c b/src/xcms/xyY.c
index 00bd8413..7b1b7731 100644
--- a/src/xcms/xyY.c
+++ b/src/xcms/xyY.c
@@ -34,6 +34,7 @@
* DOCUMENTATION
* "TekColor Color Management System, System Implementor's Manual"
*/
+/* $XFree86: xc/lib/X11/xyY.c,v 1.3 2001/01/17 19:41:57 dawes Exp $ */
#include <stdio.h>
#include <X11/Xos.h>
@@ -56,6 +57,12 @@
extern char _XcmsCIExyY_prefix[];
+/* CvCols.c */
+extern Status _XcmsDIConvertColors();
+
+/* XYZ.c */
+extern Status _XcmsCIEXYZ_ValidSpec();
+
/*
* FORWARD DECLARATIONS
*/
diff --git a/src/xkb/XKB.c b/src/xkb/XKB.c
index 22a8731f..b407bccd 100644
--- a/src/xkb/XKB.c
+++ b/src/xkb/XKB.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKB.c,v 1.7 2002/12/10 04:30:39 dawes Exp $ */
#include <stdio.h>
#define NEED_REPLIES
@@ -171,7 +172,7 @@ XkbSelectEventDetails(dpy,deviceSpec,eventType,affect,details)
{
register xkbSelectEventsReq *req;
XkbInfoPtr xkbi;
- int size;
+ int size = 0;
char *out;
union {
CARD8 *c8;
@@ -416,9 +417,10 @@ XkbSetXlibControls(dpy,affect,values)
unsigned values;
#endif
{
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
+ if (!dpy->xkb_info)
+ XkbUseExtension(dpy,NULL,NULL);
+ if (!dpy->xkb_info)
+ return 0;
affect&= XkbLC_AllControls;
dpy->xkb_info->xlib_ctrls&= ~affect;
dpy->xkb_info->xlib_ctrls|= (affect&values);
@@ -433,8 +435,9 @@ XkbGetXlibControls(dpy)
Display * dpy;
#endif
{
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ if (!dpy->xkb_info)
+ XkbUseExtension(dpy,NULL,NULL);
+ if (!dpy->xkb_info)
return 0;
return dpy->xkb_info->xlib_ctrls;
}
@@ -528,7 +531,7 @@ XkbComputeEffectiveMap(xkb,type,map_rtrn)
{
register int i;
unsigned tmp;
-XkbKTMapEntryPtr entry;
+XkbKTMapEntryPtr entry = NULL;
if ((!xkb)||(!type)||(!xkb->server))
return False;
@@ -853,7 +856,9 @@ XkbInfoPtr xkbi;
UnlockDisplay(dpy);
SyncHandle();
if (ctrls)
- *ctrls= (rep.value&XkbPCF_GrabsUseXKBStateMask|XkbPCF_LookupStateWhenGrabbed|XkbPCF_SendEventUsesXKBState);
+ *ctrls= (rep.value & (XkbPCF_GrabsUseXKBStateMask |
+ XkbPCF_LookupStateWhenGrabbed |
+ XkbPCF_SendEventUsesXKBState));
return (True);
}
diff --git a/src/xkb/XKBAlloc.c b/src/xkb/XKBAlloc.c
index 82e98f4b..c6fd855f 100644
--- a/src/xkb/XKBAlloc.c
+++ b/src/xkb/XKBAlloc.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBAlloc.c,v 3.5 2001/01/17 19:41:48 dawes Exp $ */
#ifndef XKB_IN_SERVER
diff --git a/src/xkb/XKBBind.c b/src/xkb/XKBBind.c
index 4c6334a7..138331d0 100644
--- a/src/xkb/XKBBind.c
+++ b/src/xkb/XKBBind.c
@@ -26,6 +26,8 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/XKBBind.c,v 3.15 2003/02/15 17:49:01 dawes Exp $ */
+
/* the new monsters ate the old ones */
#define NEED_EVENTS
@@ -458,8 +460,11 @@ XRefreshKeyboardMapping(event)
XkbMapChangesRec changes;
XkbInfoPtr xkbi;
+ /* always do this for input methods, which still use the old keymap */
+ (void) _XRefreshKeyboardMapping(event);
+
if (_XkbUnavailable(dpy))
- return _XRefreshKeyboardMapping(event);
+ return 1;
xkbi = dpy->xkb_info;
@@ -582,8 +587,6 @@ _XkbLoadDpy(dpy)
LockDisplay(dpy);
xkbi->desc = desc;
- _XkbGetConverters(_XkbGetCharset(),&xkbi->cvt);
- _XkbGetConverters("ISO8859-1",&xkbi->latin1cvt);
UnlockDisplay(dpy);
oldEvents= xkbi->selected_events;
if (!(xkbi->xlib_ctrls&XkbLC_IgnoreNewKeyboards)) {
@@ -669,35 +672,26 @@ XkbTranslateKeySym(dpy, sym_rtrn, mods, buffer, nbytes, extra_rtrn)
XkbKSToMBFunc cvtr;
XPointer priv;
char tmp[4];
- register struct _XKeytrans *p;
int n;
+ xkb= dpy->xkb_info;
+ if (!xkb->cvt.KSToMB) {
+ _XkbGetConverters(_XkbGetCharset(),&xkb->cvt);
+ _XkbGetConverters("ISO8859-1",&xkb->latin1cvt);
+ }
+
if (extra_rtrn)
*extra_rtrn= 0;
- if (_XkbUnavailable(dpy))
- return _XTranslateKeySym(dpy, *sym_rtrn, mods, buffer, nbytes);
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
-
- xkb= dpy->xkb_info;
if ((buffer==NULL)||(nbytes==0)) {
buffer= tmp;
nbytes= 4;
}
/* see if symbol rebound, if so, return that string. */
- for (p = dpy->key_bindings; p; p = p->next) {
- if (((mods & AllMods) == p->state) && (*sym_rtrn == p->key)) {
- int tmp = p->len;
- if (tmp > nbytes) {
- if (extra_rtrn)
- *extra_rtrn= tmp-nbytes;
- tmp = nbytes;
- }
- memcpy (buffer, p->string, tmp);
- return tmp;
- }
- }
+ n = XkbLookupKeyBinding(dpy,*sym_rtrn,mods,buffer,nbytes,extra_rtrn);
+ if (n)
+ return n;
if ( nbytes>0 )
buffer[0]= '\0';
@@ -717,35 +711,23 @@ XkbTranslateKeySym(dpy, sym_rtrn, mods, buffer, nbytes, extra_rtrn)
if ((!xkb->cvt.KSToUpper)&&( mods&LockMask )) {
register int i;
-
- if (!xkb->cvt.KSToUpper) {
- int change;
- char ch;
- for (i=change=0;i<n;i++) {
- ch= toupper(buffer[i]);
- change= (change||(buffer[i]!=ch));
- buffer[i] = ch;
- }
- if (change) {
- if (n==1)
- *sym_rtrn=(*xkb->cvt.MBToKS)(xkb->cvt.MBToKSPriv,
- buffer,n,0);
- else *sym_rtrn= NoSymbol;
- }
+ int change;
+ char ch;
+ for (i=change=0;i<n;i++) {
+ ch= toupper(buffer[i]);
+ change= (change||(buffer[i]!=ch));
+ buffer[i] = ch;
+ }
+ if (change) {
+ if (n==1)
+ *sym_rtrn=(*xkb->cvt.MBToKS)(xkb->cvt.MBToKSPriv,buffer,n,0);
+ else *sym_rtrn= NoSymbol;
}
}
if ( mods&ControlMask ) {
if ( n==1 ) {
- register char c = buffer[0];
-
- if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F;
- else if (c == '2') c = '\000';
- else if (c >= '3' && c <= '7') c -= ('3' - '\033');
- else if (c == '8') c = '\177';
- else if (c == '/') c = '_' & 0x1F;
-
- buffer[0]= c;
+ buffer[0]= XkbToControl(buffer[0]);
if ( nbytes>1 )
buffer[1]= '\0';
return 1;
@@ -779,14 +761,10 @@ XLookupString (event, buffer, nbytes, keysym, status)
Display *dpy = event->display;
XkbDescPtr xkb;
- if (_XkbUnavailable(dpy))
- return _XLookupString(event, buffer, nbytes, keysym, status);
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
-
if (keysym==NULL)
keysym= &dummy;
xkb= dpy->xkb_info->desc;
- if (!XkbTranslateKeyCode(xkb,event->keycode,event->state, &new_mods,keysym))
+ if (!XkbLookupKeySym(dpy,event->keycode,event->state, &new_mods,keysym))
return 0;
new_mods= (event->state&(~new_mods));
@@ -887,7 +865,8 @@ XLookupString (event, buffer, nbytes, keysym, status)
/* We *should* use the new_mods (which does not contain any modifiers */
/* that were used to compute the symbol here, but pre-XKB XLookupString */
/* did not and we have to remain compatible. Sigh. */
- if ((dpy->xkb_info->flags&XkbLC_ConsumeLookupMods)==0)
+ if (_XkbUnavailable(dpy) ||
+ (dpy->xkb_info->xlib_ctrls&XkbLC_ConsumeLookupMods)==0)
new_mods= event->state;
rtrnLen= XkbLookupKeyBinding(dpy,*keysym,new_mods,buffer,nbytes,NULL);
@@ -895,14 +874,24 @@ XLookupString (event, buffer, nbytes, keysym, status)
return rtrnLen;
rtrnLen = XkbTranslateKeySym(dpy,keysym,new_mods,buffer,nbytes,NULL);
+
if ((event->state&ControlMask)&&(nbytes>0)&&
- ((rtrnLen==0)||((rtrnLen==1)&&(buffer[0]>=' ')))&&
- (XkbGroupForCoreState(event->state)!=XkbGroup1Index)&&
+ ((rtrnLen==0)||
+ ((rtrnLen==1)&&((unsigned char) buffer[0]>=' ')))&&
(dpy->xkb_info->xlib_ctrls&XkbLC_ControlFallback)) {
XKeyEvent tmp_ev;
tmp_ev= *event;
- tmp_ev.state= XkbBuildCoreState(event->state,XkbGroup1Index);
- return XLookupString (&tmp_ev, buffer, nbytes, keysym, status);
+ if (_XkbUnavailable(dpy)) {
+ if (event->state & dpy->mode_switch) {
+ tmp_ev.state= event->state & ~dpy->mode_switch;
+ return XLookupString (&tmp_ev, buffer, nbytes, keysym, status);
+ }
+ } else {
+ if (XkbGroupForCoreState(event->state) != XkbGroup1Index) {
+ tmp_ev.state= XkbBuildCoreState(event->state,XkbGroup1Index);
+ return XLookupString (&tmp_ev, buffer, nbytes, keysym, status);
+ }
+ }
}
return rtrnLen;
}
@@ -948,12 +937,14 @@ XkbLookupKeyBinding(dpy, sym, mods, buffer, nbytes, extra_rtrn)
char
#if NeedFunctionPrototypes
-XkbToControl( char c )
+XkbToControl( char ch )
#else
-XkbToControl( c )
- char c;
+XkbToControl( ch )
+ char ch;
#endif
{
+ register char c = ch;
+
if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F;
else if (c == '2') c = '\000';
else if (c >= '3' && c <= '7') c -= ('3' - '\033');
diff --git a/src/xkb/XKBCtrls.c b/src/xkb/XKBCtrls.c
index 2e08e50e..de5ce366 100644
--- a/src/xkb/XKBCtrls.c
+++ b/src/xkb/XKBCtrls.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBCtrls.c,v 1.4 2002/12/10 04:33:48 dawes Exp $ */
#include <stdio.h>
#define NEED_REPLIES
@@ -303,6 +304,14 @@ XkbGetControls(dpy, which, xkb)
}
if (which&XkbAccessXKeysMask)
ctrls->ax_options= rep.axOptions;
+ if (which&XkbStickyKeysMask) {
+ ctrls->ax_options &= ~XkbAX_SKOptionsMask;
+ ctrls->ax_options |= rep.axOptions & XkbAX_SKOptionsMask;
+ }
+ if (which&XkbAccessXFeedbackMask) {
+ ctrls->ax_options &= ~XkbAX_FBOptionsMask;
+ ctrls->ax_options |= rep.axOptions & XkbAX_FBOptionsMask;
+ }
if (which&XkbAccessXTimeoutMask) {
ctrls->ax_timeout = rep.axTimeout;
ctrls->axt_ctrls_mask = rep.axtCtrlsMask;
@@ -393,7 +402,7 @@ XkbSetControls(dpy, which, xkb)
}
UnlockDisplay(dpy);
SyncHandle();
- return False;
+ return True;
}
/***====================================================================***/
diff --git a/src/xkb/XKBCvt.c b/src/xkb/XKBCvt.c
index bd965d24..c1a64dcd 100644
--- a/src/xkb/XKBCvt.c
+++ b/src/xkb/XKBCvt.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/XKBCvt.c,v 3.34 2002/10/08 23:31:35 dawes Exp $ */
#include <stdio.h>
#include <sys/types.h>
@@ -37,6 +38,7 @@ from The Open Group.
#include "Xlibint.h"
#include "Xlcint.h"
#include "XlcPubI.h"
+#include "Ximint.h"
#include <X11/Xutil.h>
#include <X11/Xmd.h>
#define XK_LATIN1
@@ -52,67 +54,6 @@ from The Open Group.
#define XKB_EXTEND_LOOKUP_STRING
#endif
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
-
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-#if defined(__STDC__) && !defined(NORCONST)
-#define RConst const
-#else
-#define RConst /**/
-#endif
-
-/* bit (1<<i) means character is in codeset i at the same codepoint */
-extern unsigned int _Xlatin1[];
-
-/* bit (1<<i) means character is in codeset i at the same codepoint */
-extern unsigned int _Xlatin2[];
-
-/* maps Cyrillic keysyms to KOI8-R */
-extern unsigned char _Xkoi8[];
-
-extern unsigned short _Xkoi8_size;
-
-#define sLatin1 0
-#define sLatin2 1
-#define sLatin3 2
-#define sLatin4 3
-#define sKana 4
-#define sX0201 0x01000004
-#define sArabic 5
-#define sCyrillic 6
-#define sGreek 7
-#define sAPL 11
-#define sHebrew 12
-#define sThai 13
-#define sKorean 14
-#define sLatin5 15
-#define sLatin6 16
-#define sLatin7 17
-#define sLatin8 18
-#define sLatin9 19
-#define sCurrency 32
-
-
-static unsigned long WantLatin1 = sLatin1;
-static unsigned long WantLatin2 = sLatin2;
-static unsigned long WantLatin3 = sLatin3;
-static unsigned long WantLatin4 = sLatin4;
-static unsigned long WantLatin5 = sLatin5;
-static unsigned long WantLatin6 = sLatin6;
-static unsigned long WantKana = sKana;
-static unsigned long WantX0201 = sX0201;
-static unsigned long WantArabic = sArabic;
-static unsigned long WantCyrillic = sCyrillic;
-static unsigned long WantGreek = sGreek;
-static unsigned long WantAPL = sAPL;
-static unsigned long WantHebrew = sHebrew;
-
static int
#if NeedFunctionPrototypes
_XkbHandleSpecialSym(KeySym keysym, char *buffer, int nbytes, int *extra_rtrn)
@@ -149,15 +90,8 @@ _XkbHandleSpecialSym(keysym, buffer, nbytes, extra_rtrn)
return 1;
}
-extern int
-_XGetCharCode (
-#if NeedFunctionPrototypes
- unsigned long, KeySym, char*, int
-#endif
-);
-
/*ARGSUSED*/
-int
+static int
#if NeedFunctionPrototypes
_XkbKSToKnownSet ( XPointer priv,
KeySym keysym,
@@ -173,16 +107,11 @@ _XkbKSToKnownSet (priv, keysym, buffer, nbytes, extra_rtrn)
int *extra_rtrn;
#endif
{
- unsigned long kset,keysymSet;
- int count,isLatin1;
char tbuf[8],*buf;
if (extra_rtrn)
*extra_rtrn= 0;
- keysymSet = *((unsigned long *)priv);
- kset = keysymSet&0xffffff;
-
/* convert "dead" diacriticals for dumb applications */
if ( (keysym&0xffffff00)== 0xfe00 ) {
switch ( keysym ) {
@@ -207,16 +136,13 @@ _XkbKSToKnownSet (priv, keysym, buffer, nbytes, extra_rtrn)
}
}
- isLatin1 = ((keysym&0xffffff00)==0);
- count = 0;
-
if (nbytes<1) buf= tbuf;
else buf= buffer;
if ((keysym&0xffffff00)==0xff00) {
return _XkbHandleSpecialSym(keysym, buf, nbytes, extra_rtrn);
}
- return _XGetCharCode (keysymSet, keysym, buf, nbytes);
+ return _XimGetCharCode (priv, keysym, (unsigned char *)buf, nbytes);
}
typedef struct _XkbToKS {
@@ -251,62 +177,6 @@ _XkbKnownSetToKS(priv,buffer,nbytes,status)
return NoSymbol;
}
-/*ARGSUSED*/
-int
-#if NeedFunctionPrototypes
-_XkbKSToThai ( XPointer priv,
- KeySym keysym,
- char * buffer,
- int nbytes,
- int * extra_rtrn)
-#else
-_XkbKSToThai (priv, keysym, buffer, nbytes, extra_rtrn)
- XPointer priv;
- KeySym keysym;
- char *buffer;
- int nbytes;
- int *extra_rtrn;
-#endif
-{
-
- if ((keysym&0xffffff00)==0xff00) {
- return _XkbHandleSpecialSym(keysym, buffer, nbytes, extra_rtrn);
- }
- else if (((keysym&0xffffff80)==0xd80)||((keysym&0xffffff80)==0)) {
- if (nbytes>0) {
- buffer[0]= (char)(keysym&0xff);
- if (nbytes>1)
- buffer[1]= '\0';
- return 1;
- }
- if (extra_rtrn)
- *extra_rtrn= 1;
- }
- return 0;
-}
-
-/*ARGSUSED*/
-static KeySym
-#if NeedFunctionPrototypes
-_XkbThaiToKS(XPointer priv,char *buffer,int nbytes,Status *status)
-#else
-_XkbThaiToKS(priv,buffer,nbytes,status)
- XPointer priv;
- char *buffer;
- int nbytes;
- Status *status;
-#endif
-{
- if (nbytes!=1)
- return NoSymbol;
- if (((buffer[0]&0x80)==0)&&(buffer[0]>=32))
- return buffer[0];
- else if ((buffer[0]&0x7f)>=32) {
- return 0xd00|buffer[0];
- }
- return NoSymbol;
-}
-
static KeySym
#if NeedFunctionPrototypes
__XkbDefaultToUpper(KeySym sym)
@@ -321,117 +191,7 @@ __XkbDefaultToUpper(sym)
return upper;
}
-int _XkbKSToKoi8 (priv, keysym, buffer, nbytes, status)
- XPointer priv;
- KeySym keysym;
- char *buffer;
- int nbytes;
- Status *status;
-{
- if ((keysym&0xffffff00)==0xff00) {
- return _XkbHandleSpecialSym(keysym, buffer, nbytes, status);
- }
- else if (((keysym&0xffffff80)==0x680)||((keysym&0xffffff80)==0)) {
- if (nbytes>0) {
- if ( (keysym&0x80)==0 )
- buffer[0] = keysym&0x7f;
- else buffer[0] = _Xkoi8[keysym & 0x7f];
- if (nbytes>1)
- buffer[1]= '\0';
- return 1;
- }
- }
- return 0;
-}
-
-static KeySym
-_XkbKoi8ToKS(priv,buffer,nbytes,status)
- XPointer priv;
- char *buffer;
- int nbytes;
- Status *status;
-{
- if (nbytes!=1)
- return NoSymbol;
- if (((buffer[0]&0x80)==0)&&(buffer[0]>=32))
- return buffer[0];
- else if ((buffer[0]&0x7f)>=32) {
- register int i;
- for (i=0;i<_Xkoi8_size;i++) {
- if (_Xkoi8[i]==buffer[0])
- return 0x680|i;
- }
- }
- return NoSymbol;
-}
-
-/***====================================================================***/
-
-
-static XkbConverters RConst cvt_ascii = {
- _XkbKSToKnownSet,(XPointer)&WantLatin1,_XkbKnownSetToKS,NULL,__XkbDefaultToUpper
-};
-
-static XkbConverters RConst cvt_latin1 = {
- _XkbKSToKnownSet,(XPointer)&WantLatin1,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_latin2 = {
- _XkbKSToKnownSet,(XPointer)&WantLatin2,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_latin3 = {
- _XkbKSToKnownSet,(XPointer)&WantLatin3,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_latin4 = {
- _XkbKSToKnownSet,(XPointer)&WantLatin4,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_latin5 = {
- _XkbKSToKnownSet,(XPointer)&WantLatin5,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_latin6 = {
- _XkbKSToKnownSet,(XPointer)&WantLatin6,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_kana = {
- _XkbKSToKnownSet,(XPointer)&WantKana,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_X0201 = {
- _XkbKSToKnownSet,(XPointer)&WantX0201,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_Arabic = {
- _XkbKSToKnownSet,(XPointer)&WantArabic,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_Cyrillic = {
- _XkbKSToKnownSet,(XPointer)&WantCyrillic,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_Greek = {
- _XkbKSToKnownSet,(XPointer)&WantGreek,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_APL = {
- _XkbKSToKnownSet,(XPointer)&WantAPL,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters RConst cvt_Hebrew = {
- _XkbKSToKnownSet,(XPointer)&WantHebrew,_XkbKnownSetToKS,NULL,NULL
-};
-
-static XkbConverters cvt_Thai = {
- _XkbKSToThai, NULL, _XkbThaiToKS, NULL, NULL
-};
-
-static XkbConverters cvt_Koi8 = {
- _XkbKSToKoi8, NULL, _XkbKoi8ToKS, NULL, NULL
-};
-
+#ifdef XKB_EXTEND_LOOKUP_STRING
static int
#if NeedFunctionPrototypes
Strcmp(char *str1, char *str2)
@@ -443,7 +203,11 @@ Strcmp(str1, str2)
char str[256];
char c, *s;
- if (strlen (str1) >= sizeof str) /* almost certain it's a mismatch */
+ /*
+ * unchecked strings from the environment can end up here, so check
+ * the length before copying.
+ */
+ if (strlen(str1) >= sizeof(str)) /* almost certain it's a mismatch */
return 1;
for (s = str; (c = *str1++); ) {
@@ -454,6 +218,7 @@ Strcmp(str1, str2)
*s = '\0';
return (strcmp(str, str2));
}
+#endif
int
#if NeedFunctionPrototypes
@@ -464,55 +229,13 @@ _XkbGetConverters(encoding_name, cvt_rtrn)
XkbConverters *cvt_rtrn;
#endif
{
- if ( cvt_rtrn ) {
- if ( (encoding_name==NULL) ||
- (Strcmp(encoding_name,"ascii")==0) ||
- (Strcmp(encoding_name,"string")==0) )
- *cvt_rtrn = cvt_ascii;
- else if (Strcmp(encoding_name,"iso8859-1")==0)
- *cvt_rtrn = cvt_latin1;
- else if (Strcmp(encoding_name, "iso8859-2")==0)
- *cvt_rtrn = cvt_latin2;
- else if (Strcmp(encoding_name, "iso8859-3")==0)
- *cvt_rtrn = cvt_latin3;
- else if (Strcmp(encoding_name, "iso8859-4")==0)
- *cvt_rtrn = cvt_latin4;
- else if (Strcmp(encoding_name, "iso8859-5")==0)
- *cvt_rtrn = cvt_Cyrillic;
- else if (Strcmp(encoding_name, "iso8859-6")==0)
- *cvt_rtrn = cvt_Arabic;
- else if (Strcmp(encoding_name, "iso8859-7")==0)
- *cvt_rtrn = cvt_Greek;
- else if (Strcmp(encoding_name, "iso8859-8")==0)
- *cvt_rtrn = cvt_Hebrew;
- else if (Strcmp(encoding_name, "iso8859-9")==0)
- *cvt_rtrn = cvt_latin5;
- else if (Strcmp(encoding_name, "iso8859-10")==0)
- *cvt_rtrn = cvt_latin6;
- else if (Strcmp(encoding_name, "apl")==0)
- *cvt_rtrn = cvt_APL;
-#if 0
- else if (Strcmp(encoding_name, "ja.euc")==0)
- *cvt_rtrn = ???;
- else if (Strcmp(encoding_name, "ja.jis")==0)
- *cvt_rtrn = ???;
- else if (Strcmp(encoding_name, "ja.sjis")==0)
- *cvt_rtrn = ???;
-#endif
- else if (Strcmp(encoding_name, "jisx0201")==0) /* ??? */
- *cvt_rtrn = cvt_X0201;
- else if (Strcmp(encoding_name, "kana")==0) /* ??? */
- *cvt_rtrn = cvt_kana;
- else if ((Strcmp(encoding_name, "tactis")==0) ||
- (Strcmp(encoding_name, "tis620.2533-1")==0))
- *cvt_rtrn = cvt_Thai;
- else if (Strcmp(encoding_name, "koi8-r")==0)
- *cvt_rtrn = cvt_Koi8;
- /* other codesets go here */
- else *cvt_rtrn = cvt_latin1;
- return 1;
- }
- *cvt_rtrn= cvt_latin1;
+ if ( !cvt_rtrn ) return 0;
+
+ cvt_rtrn->KSToMB = _XkbKSToKnownSet;
+ cvt_rtrn->KSToMBPriv = _XimGetLocaleCode(encoding_name);
+ cvt_rtrn->MBToKS = _XkbKnownSetToKS;
+ cvt_rtrn->MBToKSPriv = NULL;
+ cvt_rtrn->KSToUpper = __XkbDefaultToUpper;
return 1;
}
@@ -532,7 +255,7 @@ _XkbGetConverters(encoding_name, cvt_rtrn)
*/
#define CHARSET_FILE "/usr/lib/X11/input/charsets"
-static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fi,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:bg,ru=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:th,th_TH,th_TH.TACTIS=tactis";
+static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:eo=iso8859-3:sp=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:he=iso8859-8:tr=iso8859-9:lt,lv=iso8859-13:et,fi=iso8859-15:ru=koi8-r:uk=koi8-u:th,th_TH,th_TH.iso8859-11=iso8859-11:th_TH.TIS620=tis620:hy=armscii-8:vi=tcvn-5712:ka=georgian-academy:be,bg=microsoft-cp1251";
char *
_XkbGetCharset()
@@ -555,6 +278,9 @@ _XkbGetCharset()
if ( locale == NULL )
return NULL;
+ if (strlen(locale) >= sizeof(lang))
+ return NULL;
+
for (tmp = lang; *tmp = *locale++; tmp++) {
if (isupper(*tmp))
*tmp = tolower(*tmp);
@@ -581,8 +307,13 @@ _XkbGetCharset()
} else {
struct stat sbuf;
FILE *file;
- if ( (stat(CHARSET_FILE,&sbuf)==0) && (sbuf.st_mode&S_IFREG) &&
- (file = fopen(CHARSET_FILE,"r")) ) {
+#ifndef __UNIXOS2__
+ char *cf = CHARSET_FILE;
+#else
+ char *cf = __XOS2RedirRoot(CHARSET_FILE);
+#endif
+ if ( (stat(cf,&sbuf)==0) && (sbuf.st_mode&S_IFREG) &&
+ (file = fopen(cf,"r")) ) {
tmp = _XkbAlloc(sbuf.st_size+1);
if (tmp!=NULL) {
sbuf.st_size = (long)fread(tmp,1,sbuf.st_size,file);
diff --git a/src/xkb/XKBExtDev.c b/src/xkb/XKBExtDev.c
index c4d99681..b2081992 100644
--- a/src/xkb/XKBExtDev.c
+++ b/src/xkb/XKBExtDev.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBExtDev.c,v 3.4 2001/10/28 03:32:33 tsi Exp $ */
#include <stdio.h>
#define NEED_REPLIES
@@ -589,8 +590,10 @@ Bool match;
match= ((class==devli->led_class)||(class==XkbAllXIClasses));
if (devli->led_class==KbdFeedbackClass) dflt= stuff->dflt_kbd_fb;
else dflt= stuff->dflt_led_fb;
- match= match && (id==devli->led_id) || (id==XkbAllXIIds) ||
- ((id==XkbDfltXIId)&&(linfo==dflt));
+ match = (match && (id == devli->led_id)) ||
+ (id == XkbAllXIIds) ||
+ ((id == XkbDfltXIId) &&
+ (linfo == dflt));
if (match) {
if (!linfo->used) {
*sz_rtrn+= _XkbSizeLedInfo(stuff->wanted,devli);
@@ -768,7 +771,7 @@ XkbSetDeviceInfo(dpy,which,devi)
#endif
{
register xkbSetDeviceInfoReq *req;
- Status ok;
+ Status ok = 0;
int size,nLeds;
XkbInfoPtr xkbi;
XkbDeviceChangesRec changes;
@@ -830,7 +833,7 @@ XkbChangeDeviceInfo(dpy,devi,changes)
#endif
{
register xkbSetDeviceInfoReq *req;
- Status ok;
+ Status ok = 0;
int size,nLeds;
XkbInfoPtr xkbi;
SetLedStuff lstuff;
@@ -906,7 +909,7 @@ XkbSetDeviceButtonActions(dpy,devi,first,nBtns)
#endif
{
register xkbSetDeviceInfoReq *req;
- Status ok;
+ Status ok = 0;
int size,nLeds;
XkbInfoPtr xkbi;
XkbDeviceChangesRec changes;
diff --git a/src/xkb/XKBGAlloc.c b/src/xkb/XKBGAlloc.c
index c89e1197..44a74c6a 100644
--- a/src/xkb/XKBGAlloc.c
+++ b/src/xkb/XKBGAlloc.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBGAlloc.c,v 3.4 2001/01/17 19:41:48 dawes Exp $ */
#define NEED_EVENTS
#define NEED_REPLIES
diff --git a/src/xkb/XKBGeom.c b/src/xkb/XKBGeom.c
index 5cdd6b99..9afc0c0d 100644
--- a/src/xkb/XKBGeom.c
+++ b/src/xkb/XKBGeom.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBGeom.c,v 1.4 2001/10/28 03:32:33 tsi Exp $ */
#ifdef DEBUG
#include <stdio.h>
@@ -173,7 +174,7 @@ register int i;
XkbShapePtr shape;
XkbRowPtr row;
XkbDoodadPtr doodad;
-XkbBoundsPtr bounds,rbounds;
+XkbBoundsPtr bounds,rbounds=NULL;
if ((!geom)||(!section))
return False;
diff --git a/src/xkb/XKBGetMap.c b/src/xkb/XKBGetMap.c
index 8975ba39..e0fe10e5 100644
--- a/src/xkb/XKBGetMap.c
+++ b/src/xkb/XKBGetMap.c
@@ -25,6 +25,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBGetMap.c,v 1.7 2003/02/04 03:49:33 dawes Exp $ */
+
#define NEED_REPLIES
#define NEED_EVENTS
#define NEED_MAP_READERS
@@ -467,8 +469,10 @@ XkbServerMapPtr srv;
}
else {
srv= xkb->server;
- bzero((char *)&srv->vmodmap[rep->firstVModMapKey],
- rep->nVModMapKeys*sizeof(unsigned short));
+ if (rep->nVModMapKeys > rep->firstVModMapKey)
+ bzero((char *)&srv->vmodmap[rep->firstVModMapKey],
+ (rep->nVModMapKeys - rep->firstVModMapKey) *
+ sizeof(unsigned short));
}
srv= xkb->server;
i= rep->totalVModMapKeys*SIZEOF(xkbVModMapWireDesc);
@@ -970,6 +974,7 @@ XkbGetMapChanges(dpy,xkb,changes)
UnlockDisplay(dpy);
return status;
}
+ UnlockDisplay(dpy);
return Success;
}
diff --git a/src/xkb/XKBMAlloc.c b/src/xkb/XKBMAlloc.c
index ba2a7076..29cdc3c8 100644
--- a/src/xkb/XKBMAlloc.c
+++ b/src/xkb/XKBMAlloc.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBMAlloc.c,v 3.11 2001/01/17 19:41:48 dawes Exp $ */
#ifndef XKB_IN_SERVER
diff --git a/src/xkb/XKBMisc.c b/src/xkb/XKBMisc.c
index 45c00692..f3de9295 100644
--- a/src/xkb/XKBMisc.c
+++ b/src/xkb/XKBMisc.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBMisc.c,v 3.5 2001/10/28 03:32:33 tsi Exp $ */
#ifndef XKB_IN_SERVER
@@ -54,12 +55,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define mapSize(m) (sizeof(m)/sizeof(XkbKTMapEntryRec))
static XkbKTMapEntryRec map2Level[]= {
- { True, ShiftMask, 1, ShiftMask, 0 }
+ { True, ShiftMask, {1, ShiftMask, 0} }
};
static XkbKTMapEntryRec mapAlpha[]= {
- { True, ShiftMask, 1, ShiftMask, 0 },
- { True, LockMask, 0, LockMask, 0 }
+ { True, ShiftMask, { 1, ShiftMask, 0 } },
+ { True, LockMask, { 0, LockMask, 0 } }
};
static XkbModsRec preAlpha[]= {
@@ -69,8 +70,8 @@ static XkbModsRec preAlpha[]= {
#define NL_VMOD_MASK 0
static XkbKTMapEntryRec mapKeypad[]= {
- { True, ShiftMask, 1, ShiftMask, 0 },
- { False, 0, 1, 0, NL_VMOD_MASK }
+ { True, ShiftMask, { 1, ShiftMask, 0 } },
+ { False, 0, { 1, 0, NL_VMOD_MASK } }
};
static XkbKeyTypeRec canonicalTypes[XkbNumRequiredTypes] = {
@@ -564,7 +565,7 @@ unsigned changed,tmp;
if (((explicit&XkbExplicitAutoRepeatMask)==0)&&(xkb->ctrls)) {
CARD8 old;
old= xkb->ctrls->per_key_repeat[key/8];
-#if RETURN_SHOULD_REPEAT
+#ifdef RETURN_SHOULD_REPEAT
if (*XkbKeySymsPtr(xkb,key) != XK_Return)
#endif
xkb->ctrls->per_key_repeat[key/8]|= (1<<(key%8));
@@ -968,7 +969,7 @@ XkbApplyVirtualModChanges(xkb,changed,changes)
#endif
{
register int i;
-unsigned checkState;
+unsigned int checkState = 0;
if ((!xkb) || (!xkb->map) || (changed==0))
return False;
@@ -1035,8 +1036,7 @@ unsigned checkState;
}
}
if (xkb->map && xkb->server) {
- int highChange,lowChange;
- lowChange= -1;
+ int highChange = 0, lowChange = -1;
for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
if (XkbKeyHasActions(xkb,i)) {
register XkbAction *pAct;
diff --git a/src/xkb/XKBNames.c b/src/xkb/XKBNames.c
index 22439d29..a072bf88 100644
--- a/src/xkb/XKBNames.c
+++ b/src/xkb/XKBNames.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBNames.c,v 1.4 2001/10/28 03:32:33 tsi Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -369,12 +370,12 @@ XkbSetNames(dpy,which,firstType,nTypes,xkb)
#endif
{
register xkbSetNamesReq *req;
- int nLvlNames;
+ int nLvlNames = 0;
XkbInfoPtr xkbi;
XkbNamesPtr names;
unsigned firstLvlType,nLvlTypes;
int nVMods,nLEDs,nRG,nKA,nGroups;
- int nKeys,firstKey,nAtoms;
+ int nKeys=0,firstKey=0,nAtoms;
CARD32 leds,vmods,groups;
if ((dpy->flags & XlibDisplayNoXkb) ||
@@ -598,14 +599,14 @@ XkbChangeNames(dpy,xkb,changes)
#endif
{
register xkbSetNamesReq *req;
- int nLvlNames;
+ int nLvlNames = 0;
XkbInfoPtr xkbi;
XkbNamesPtr names;
unsigned which,firstType,nTypes;
unsigned firstLvlType,nLvlTypes;
int nVMods,nLEDs,nRG,nKA,nGroups;
- int nKeys,firstKey,nAtoms;
- CARD32 leds,vmods,groups;
+ int nKeys=0,firstKey=0,nAtoms;
+ CARD32 leds=0,vmods=0,groups=0;
if ((dpy->flags & XlibDisplayNoXkb) ||
(!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
diff --git a/src/xkb/XKBRdBuf.c b/src/xkb/XKBRdBuf.c
index 11a9ba71..5e962b1c 100644
--- a/src/xkb/XKBRdBuf.c
+++ b/src/xkb/XKBRdBuf.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBRdBuf.c,v 1.2 2001/10/28 03:32:33 tsi Exp $ */
#include <stdio.h>
#define NEED_REPLIES
@@ -301,7 +302,7 @@ _XkbGetReadBufferCountedString(buf,rtrn)
{
CARD16 len,*pLen;
int left;
-char * str;
+char * str = NULL;
if ((buf==NULL)||(buf->error)||((left=(int)_XkbReadBufferDataLeft(buf))<4))
return False;
diff --git a/src/xkb/XKBSetMap.c b/src/xkb/XKBSetMap.c
index f7b99bde..331ad402 100644
--- a/src/xkb/XKBSetMap.c
+++ b/src/xkb/XKBSetMap.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBSetMap.c,v 3.2 2001/01/17 19:41:49 dawes Exp $ */
#include <stdio.h>
#define NEED_REPLIES
diff --git a/src/xkb/XKBUse.c b/src/xkb/XKBUse.c
index 1b564cc6..9e7966b2 100644
--- a/src/xkb/XKBUse.c
+++ b/src/xkb/XKBUse.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBUse.c,v 3.6 2001/08/13 17:46:02 dawes Exp $ */
#include <stdio.h>
#include <ctype.h>
@@ -33,10 +34,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <X11/extensions/XKBproto.h>
#include "XKBlibint.h"
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
-
static Bool _XkbIgnoreExtension = False;
void
@@ -672,7 +669,7 @@ XkbUseExtension(dpy,major_rtrn,minor_rtrn)
static int debugMsg;
static int been_here= 0;
- if ( dpy->xkb_info ) {
+ if ( dpy->xkb_info && (!dpy->flags&XlibDisplayNoXkb)) {
if (major_rtrn) *major_rtrn= dpy->xkb_info->srv_major;
if (minor_rtrn) *minor_rtrn= dpy->xkb_info->srv_minor;
return True;
@@ -685,8 +682,78 @@ XkbUseExtension(dpy,major_rtrn,minor_rtrn)
if (major_rtrn) *major_rtrn= 0;
if (minor_rtrn) *minor_rtrn= 0;
+ if (!dpy->xkb_info) {
+ xkbi = _XkbTypedCalloc(1, XkbInfoRec);
+ if ( !xkbi )
+ return False;
+ dpy->xkb_info = xkbi;
+ dpy->free_funcs->xkb = _XkbFreeInfo;
+
+ xkbi->xlib_ctrls|= (XkbLC_ControlFallback|XkbLC_ConsumeLookupMods);
+ if ((str=getenv("_XKB_OPTIONS_ENABLE"))!=NULL) {
+ if ((str=getenv("_XKB_LATIN1_LOOKUP"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ForceLatin1Lookup;
+ else xkbi->xlib_ctrls|= XkbLC_ForceLatin1Lookup;
+ }
+ if ((str=getenv("_XKB_CONSUME_LOOKUP_MODS"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ConsumeLookupMods;
+ else xkbi->xlib_ctrls|= XkbLC_ConsumeLookupMods;
+ }
+ if ((str=getenv("_XKB_CONSUME_SHIFT_AND_LOCK"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_AlwaysConsumeShiftAndLock;
+ else xkbi->xlib_ctrls|= XkbLC_AlwaysConsumeShiftAndLock;
+ }
+ if ((str=getenv("_XKB_IGNORE_NEW_KEYBOARDS"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_IgnoreNewKeyboards;
+ else xkbi->xlib_ctrls|= XkbLC_IgnoreNewKeyboards;
+ }
+ if ((str=getenv("_XKB_CONTROL_FALLBACK"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ControlFallback;
+ else xkbi->xlib_ctrls|= XkbLC_ControlFallback;
+ }
+ if ((str=getenv("_XKB_COMP_LED"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ComposeLED;
+ else {
+ xkbi->xlib_ctrls|= XkbLC_ComposeLED;
+ if (strlen(str)>0)
+ xkbi->composeLED= XInternAtom(dpy,str,False);
+ }
+ }
+ if ((str=getenv("_XKB_COMP_FAIL_BEEP"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_BeepOnComposeFail;
+ else xkbi->xlib_ctrls|= XkbLC_BeepOnComposeFail;
+ }
+ }
+ if ((xkbi->composeLED==None)&&((xkbi->xlib_ctrls&XkbLC_ComposeLED)!=0))
+ xkbi->composeLED= XInternAtom(dpy,"Compose",False);
+#ifdef DEBUG
+ if (debugMsg) {
+ register unsigned c= xkbi->xlib_ctrls;
+ fprintf(stderr,"XKEYBOARD compose: beep on failure is %s, LED is %s\n",
+ ((c&XkbLC_BeepOnComposeFail)?"on":"off"),
+ ((c&XkbLC_ComposeLED)?"on":"off"));
+ fprintf(stderr,"XKEYBOARD XLookupString: %slatin-1, %s lookup modifiers\n",
+ ((c&XkbLC_ForceLatin1Lookup)?"allow non-":"force "),
+ ((c&XkbLC_ConsumeLookupMods)?"consume":"re-use"));
+ fprintf(stderr,
+ "XKEYBOARD XLookupString: %sconsume shift and lock, %scontrol fallback\n",
+ ((c&XkbLC_AlwaysConsumeShiftAndLock)?"always ":"don't "),
+ ((c&XkbLC_ControlFallback)?"":"no "));
+
+ }
+#endif
+ } else
+ xkbi = dpy->xkb_info;
+
forceIgnore= (dpy->flags&XlibDisplayNoXkb)||dpy->keysyms;
- forceIgnore= forceIgnore&(major_rtrn==NULL)&&(minor_rtrn==NULL);
+ forceIgnore= forceIgnore&&(major_rtrn==NULL)&&(minor_rtrn==NULL);
if ( forceIgnore || _XkbIgnoreExtension || getenv("XKB_DISABLE")) {
LockDisplay(dpy);
dpy->flags |= XlibDisplayNoXkb;
@@ -696,15 +763,10 @@ XkbUseExtension(dpy,major_rtrn,minor_rtrn)
return False;
}
- xkbi = _XkbTypedCalloc(1, XkbInfoRec);
- if ( !xkbi )
- return False;
-
if ( (codes=XInitExtension(dpy,XkbName))==NULL ) {
LockDisplay(dpy);
dpy->flags |= XlibDisplayNoXkb;
UnlockDisplay(dpy);
- Xfree(xkbi);
if (debugMsg)
fprintf(stderr,"XKEYBOARD extension not present\n");
return False;
@@ -746,8 +808,7 @@ XkbUseExtension(dpy,major_rtrn,minor_rtrn)
dpy->flags |= XlibDisplayNoXkb;
UnlockDisplay(dpy);
SyncHandle();
- Xfree(xkbi);
- if (major_rtrn) *major_rtrn= rep.serverMajor;
+ if (major_rtrn) *major_rtrn= rep.serverMajor;
if (minor_rtrn) *minor_rtrn= rep.serverMinor;
return False;
}
@@ -766,70 +827,8 @@ XkbUseExtension(dpy,major_rtrn,minor_rtrn)
fprintf(stderr,"XKEYBOARD (version %d.%02d/%d.%02d) OK!\n",
XkbMajorVersion,XkbMinorVersion,
rep.serverMajor,rep.serverMinor);
- dpy->xkb_info = xkbi;
- dpy->free_funcs->xkb = _XkbFreeInfo;
- ev_base = codes->first_event;
- xkbi->xlib_ctrls|=
- (XkbLC_BeepOnComposeFail|XkbLC_ComposeLED|XkbLC_ControlFallback);
- if ((str=getenv("_XKB_OPTIONS_ENABLE"))!=NULL) {
- if ((str=getenv("_XKB_LATIN1_LOOKUP"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ForceLatin1Lookup;
- else xkbi->xlib_ctrls|= XkbLC_ForceLatin1Lookup;
- }
- if ((str=getenv("_XKB_CONSUME_LOOKUP_MODS"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ConsumeLookupMods;
- else xkbi->xlib_ctrls|= XkbLC_ConsumeLookupMods;
- }
- if ((str=getenv("_XKB_CONSUME_SHIFT_AND_LOCK"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_AlwaysConsumeShiftAndLock;
- else xkbi->xlib_ctrls|= XkbLC_AlwaysConsumeShiftAndLock;
- }
- if ((str=getenv("_XKB_IGNORE_NEW_KEYBOARDS"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_IgnoreNewKeyboards;
- else xkbi->xlib_ctrls|= XkbLC_IgnoreNewKeyboards;
- }
- if ((str=getenv("_XKB_CONTROL_FALLBACK"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ControlFallback;
- else xkbi->xlib_ctrls|= XkbLC_ControlFallback;
- }
- if ((str=getenv("_XKB_COMP_LED"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ComposeLED;
- else {
- xkbi->xlib_ctrls|= XkbLC_ComposeLED;
- if (strlen(str)>0)
- xkbi->composeLED= XInternAtom(dpy,str,False);
- }
- }
- if ((str=getenv("_XKB_COMP_FAIL_BEEP"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_BeepOnComposeFail;
- else xkbi->xlib_ctrls|= XkbLC_BeepOnComposeFail;
- }
- }
- if ((xkbi->composeLED==None)&&((xkbi->xlib_ctrls&XkbLC_ComposeLED)!=0))
- xkbi->composeLED= XInternAtom(dpy,"Compose",False);
-#ifdef DEBUG
- if (debugMsg) {
- register unsigned c= xkbi->xlib_ctrls;
- fprintf(stderr,"XKEYBOARD compose: beep on failure is %s, LED is %s\n",
- ((c&XkbLC_BeepOnComposeFail)?"on":"off"),
- ((c&XkbLC_ComposeLED)?"on":"off"));
- fprintf(stderr,"XKEYBOARD XLookupString: %slatin-1, %s lookup modifiers\n",
- ((c&XkbLC_ForceLatin1Lookup)?"allow non-":"force "),
- ((c&XkbLC_ConsumeLookupMods)?"consume":"re-use"));
- fprintf(stderr,
- "XKEYBOARD XLookupString: %sconsume shift and lock, %scontrol fallback\n",
- ((c&XkbLC_AlwaysConsumeShiftAndLock)?"always ":"don't "),
- ((c&XkbLC_ControlFallback)?"":"no "));
- }
-#endif
+ ev_base = codes->first_event;
XESetWireToEvent(dpy,ev_base+XkbEventCode,wire_to_event);
SyncHandle();
return True;
diff --git a/src/xkb/XKBleds.c b/src/xkb/XKBleds.c
index a4636157..aa6ba3d0 100644
--- a/src/xkb/XKBleds.c
+++ b/src/xkb/XKBleds.c
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBleds.c,v 1.3 2001/02/21 15:18:03 tsi Exp $ */
#define NEED_REPLIES
#define NEED_EVENTS
@@ -340,8 +341,7 @@ XkbSetNamedDeviceIndicator(dpy,device,class,id,name,changeState,
XkbInfoPtr xkbi;
if ((dpy->flags & XlibDisplayNoXkb) || (name==None) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)) ||
- (pMap==NULL))
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
diff --git a/src/xkb/XKBlibint.h b/src/xkb/XKBlibint.h
index 5247cb7c..b287cf67 100644
--- a/src/xkb/XKBlibint.h
+++ b/src/xkb/XKBlibint.h
@@ -24,6 +24,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
THE USE OR PERFORMANCE OF THIS SOFTWARE.
********************************************************/
+/* $XFree86: xc/lib/X11/XKBlibint.h,v 3.4 2001/01/17 19:41:49 dawes Exp $ */
#ifndef _XKBLIBINT_H_
#define _XKBLIBINT_H_
diff --git a/src/xlibi18n/ICWrap.c b/src/xlibi18n/ICWrap.c
index be511f4a..fcd2563c 100644
--- a/src/xlibi18n/ICWrap.c
+++ b/src/xlibi18n/ICWrap.c
@@ -64,6 +64,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/ICWrap.c,v 1.8 2002/11/25 14:04:53 eich Exp $ */
#define NEED_EVENTS
#include "Xlibint.h"
@@ -102,15 +103,8 @@ _XIMCountNestedList(args, total_count)
}
}
-#if NeedVarargsPrototypes
static void
_XIMCountVaList(va_list var, int *total_count)
-#else
-static void
-_XIMCountVaList(var, total_count)
- va_list var;
- int *total_count;
-#endif
{
char *attr;
@@ -120,22 +114,14 @@ _XIMCountVaList(var, total_count)
if (!strcmp(attr, XNVaNestedList)) {
_XIMCountNestedList(va_arg(var, XIMArg*), total_count);
} else {
- va_arg(var, XIMArg*);
+ (void)va_arg(var, XIMArg*);
++(*total_count);
}
}
}
-#if NeedVarargsPrototypes
static void
_XIMVaToNestedList(va_list var, int max_count, XIMArg **args_return)
-#else
-static void
-_XIMVaToNestedList(var, max_count, args_return)
- va_list var;
- int max_count;
- XIMArg **args_return;
-#endif
{
XIMArg *args;
char *attr;
@@ -162,40 +148,26 @@ _XIMVaToNestedList(var, max_count, args_return)
}
/*ARGSUSED*/
-#if NeedVarargsPrototypes
XVaNestedList
XVaCreateNestedList(int dummy, ...)
-#else
-XVaNestedList
-XVaCreateNestedList(dummy, va_alist)
- int dummy;
- va_dcl
-#endif
{
va_list var;
XIMArg *args = NULL;
int total_count;
- Va_start(var, dummy);
+ va_start(var, dummy);
_XIMCountVaList(var, &total_count);
va_end(var);
- Va_start(var, dummy);
+ va_start(var, dummy);
_XIMVaToNestedList(var, total_count, &args);
va_end(var);
return (XVaNestedList)args;
}
-#if NeedVarargsPrototypes
char *
XSetIMValues(XIM im, ...)
-#else /* NeedVarargsPrototypes */
-char *
-XSetIMValues(im, va_alist)
- XIM im;
- va_dcl
-#endif /* NeedVarargsPrototypes */
{
va_list var;
int total_count;
@@ -205,14 +177,14 @@ XSetIMValues(im, va_alist)
/*
* so count the stuff dangling here
*/
- Va_start(var, im);
+ va_start(var, im);
_XIMCountVaList(var, &total_count);
va_end(var);
/*
* now package it up so we can send it along
*/
- Va_start(var, im);
+ va_start(var, im);
_XIMVaToNestedList(var, total_count, &args);
va_end(var);
@@ -221,15 +193,8 @@ XSetIMValues(im, va_alist)
return ret;
}
-#if NeedVarargsPrototypes
char *
XGetIMValues(XIM im, ...)
-#else /* NeedVarargsPrototypes */
-char *
-XGetIMValues(im, va_alist)
- XIM im;
- va_dcl
-#endif /* NeedVarargsPrototypes */
{
va_list var;
int total_count;
@@ -239,14 +204,14 @@ XGetIMValues(im, va_alist)
/*
* so count the stuff dangling here
*/
- Va_start(var, im);
+ va_start(var, im);
_XIMCountVaList(var, &total_count);
va_end(var);
/*
* now package it up so we can send it along
*/
- Va_start(var, im);
+ va_start(var, im);
_XIMVaToNestedList(var, total_count, &args);
va_end(var);
@@ -260,15 +225,8 @@ XGetIMValues(im, va_alist)
* and return a pointer to the input context.
*/
-#if NeedVarargsPrototypes
XIC
XCreateIC(XIM im, ...)
-#else
-XIC
-XCreateIC(im, va_alist)
- XIM im; /* specified the attached input method */
- va_dcl /* specified variable length argment list */
-#endif
{
va_list var;
int total_count;
@@ -278,14 +236,14 @@ XCreateIC(im, va_alist)
/*
* so count the stuff dangling here
*/
- Va_start(var, im);
+ va_start(var, im);
_XIMCountVaList(var, &total_count);
va_end(var);
/*
* now package it up so we can send it along
*/
- Va_start(var, im);
+ va_start(var, im);
_XIMVaToNestedList(var, total_count, &args);
va_end(var);
@@ -320,15 +278,8 @@ XDestroyIC(ic)
Xfree ((char *) ic);
}
-#if NeedVarargsPrototypes
char *
XGetICValues(XIC ic, ...)
-#else
-char *
-XGetICValues(ic, va_alist)
- XIC ic;
- va_dcl
-#endif
{
va_list var;
int total_count;
@@ -341,14 +292,14 @@ XGetICValues(ic, va_alist)
/*
* so count the stuff dangling here
*/
- Va_start(var, ic);
+ va_start(var, ic);
_XIMCountVaList(var, &total_count);
va_end(var);
/*
* now package it up so we can send it along
*/
- Va_start(var, ic);
+ va_start(var, ic);
_XIMVaToNestedList(var, total_count, &args);
va_end(var);
@@ -357,15 +308,8 @@ XGetICValues(ic, va_alist)
return ret;
}
-#if NeedVarargsPrototypes
char *
XSetICValues(XIC ic, ...)
-#else
-char *
-XSetICValues(ic, va_alist)
- XIC ic;
- va_dcl
-#endif
{
va_list var;
int total_count;
@@ -378,14 +322,14 @@ XSetICValues(ic, va_alist)
/*
* so count the stuff dangling here
*/
- Va_start(var, ic);
+ va_start(var, ic);
_XIMCountVaList(var, &total_count);
va_end(var);
/*
* now package it up so we can send it along
*/
- Va_start(var, ic);
+ va_start(var, ic);
_XIMVaToNestedList(var, total_count, &args);
va_end(var);
@@ -428,7 +372,8 @@ XIMOfIC(ic)
return ic->core.im;
}
-char *XmbResetIC(ic)
+char *
+XmbResetIC(ic)
XIC ic;
{
if (ic->core.im)
@@ -436,7 +381,8 @@ char *XmbResetIC(ic)
return (char *)NULL;
}
-wchar_t *XwcResetIC(ic)
+wchar_t *
+XwcResetIC(ic)
XIC ic;
{
if (ic->core.im)
@@ -444,6 +390,19 @@ wchar_t *XwcResetIC(ic)
return (wchar_t *)NULL;
}
+char *
+Xutf8ResetIC(ic)
+ XIC ic;
+{
+ if (ic->core.im) {
+ if (*ic->methods->utf8_reset)
+ return (*ic->methods->utf8_reset)(ic);
+ else if (*ic->methods->mb_reset)
+ return (*ic->methods->mb_reset)(ic);
+ }
+ return (char *)NULL;
+}
+
int
XmbLookupString(ic, ev, buffer, nbytes, keysym, status)
XIC ic;
@@ -473,3 +432,23 @@ XwcLookupString(ic, ev, buffer, nchars, keysym, status)
keysym, status);
return XLookupNone;
}
+
+int
+Xutf8LookupString(ic, ev, buffer, nbytes, keysym, status)
+ XIC ic;
+ register XKeyEvent *ev;
+ char *buffer;
+ int nbytes;
+ KeySym *keysym;
+ Status *status;
+{
+ if (ic->core.im) {
+ if (*ic->methods->utf8_lookup_string)
+ return (*ic->methods->utf8_lookup_string) (ic, ev, buffer, nbytes,
+ keysym, status);
+ else if (*ic->methods->mb_lookup_string)
+ return (*ic->methods->mb_lookup_string) (ic, ev, buffer, nbytes,
+ keysym, status);
+ }
+ return XLookupNone;
+}
diff --git a/src/xlibi18n/IMWrap.c b/src/xlibi18n/IMWrap.c
index fc8e6426..b9f8f60a 100644
--- a/src/xlibi18n/IMWrap.c
+++ b/src/xlibi18n/IMWrap.c
@@ -1,5 +1,5 @@
/*
- * $Xorg: IMWrap.c,v 1.4 2001/02/09 02:03:33 xorgcvs Exp $
+ * $Xorg: IMWrap.c,v 1.3 2000/08/17 19:44:37 cpqbld Exp $
*/
/*
@@ -57,6 +57,8 @@ from The Open Group.
*/
+/* $XFree86: xc/lib/X11/IMWrap.c,v 3.8 2001/12/14 19:54:01 dawes Exp $ */
+
#include "Xlibint.h"
#include "Xlcint.h"
@@ -96,7 +98,7 @@ _XCopyToArg(src, dst, size)
memcpy((char *)&u, (char *)src, (int)size);
if (size == sizeof(long)) *dst = (XPointer)u.longval;
#ifdef LONG64
- else if (size == sizeof(int)) *dst = (XPointer)u.intval;
+ else if (size == sizeof(int)) *dst = (XPointer)(long)u.intval;
#endif
else if (size == sizeof(short)) *dst = (XPointer)(long)u.shortval;
else if (size == sizeof(char)) *dst = (XPointer)(long)u.charval;
@@ -174,14 +176,24 @@ XLocaleOfIM(im)
* on-demand input method instantiation.
*/
Bool
+#if NeedFunctionPrototypes
+XRegisterIMInstantiateCallback(
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+#else
XRegisterIMInstantiateCallback( display, rdb, res_name, res_class, callback,
client_data)
Display *display;
XrmDatabase rdb;
char *res_name;
char *res_class;
- XIMProc callback;
- XPointer *client_data;
+ XIDProc callback;
+ XPointer client_data;
+#endif
{
XLCd lcd = _XOpenLC( (char *)NULL );
@@ -196,14 +208,24 @@ XRegisterIMInstantiateCallback( display, rdb, res_name, res_class, callback,
* Unregister to a input method instantiation callback.
*/
Bool
+#if NeedFunctionPrototypes
+XUnregisterIMInstantiateCallback(
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+#else
XUnregisterIMInstantiateCallback( display, rdb, res_name, res_class, callback,
client_data )
Display *display;
XrmDatabase rdb;
char *res_name;
char *res_class;
- XIMProc callback;
- XPointer *client_data;
+ XIDProc callback;
+ XPointer client_data;
+#endif
{
XLCd lcd = _XlcCurrentLC();
diff --git a/src/xlibi18n/XDefaultIMIF.c b/src/xlibi18n/XDefaultIMIF.c
index e31c207b..bf2e701e 100644
--- a/src/xlibi18n/XDefaultIMIF.c
+++ b/src/xlibi18n/XDefaultIMIF.c
@@ -41,6 +41,7 @@ interest in or to any trademark, service mark, logo or trade name of
Sun Microsystems, Inc. or its licensors is granted.
*/
+/* $XFree86: xc/lib/X11/XDefaultIMIF.c,v 1.2 2001/11/19 15:33:38 tsi Exp $ */
#include <stdio.h>
#define NEED_EVENTS
@@ -159,8 +160,10 @@ static _Xconst XICMethodsRec local_ic_methods = {
_GetICValues, /* get_values */
_MbReset, /* mb_reset */
_WcReset, /* wc_reset */
+ NULL, /* utf8_reset */ /* ??? */
_MbLookupString, /* mb_lookup_string */
_WcLookupString, /* wc_lookup_string */
+ NULL /* utf8_lookup_string */ /* ??? */
};
XIM
@@ -170,8 +173,6 @@ Display *dpy;
XrmDatabase rdb;
char *res_name, *res_class;
{
- FILE *fp;
- char *name;
StaticXIM im;
XIMStaticXIMRec *local_impart;
XlcConv ctom_conv, ctow_conv;
@@ -240,9 +241,6 @@ char *res_name, *res_class;
}
return (XIM)im;
-Error1 :
- if(im->core.im_name)
- Xfree(im->core.im_name);
Error2 :
Xfree(im->private);
Xfree(im->core.im_name);
@@ -280,10 +278,7 @@ XIM xim;
XIMArg *values;
{
XIMArg *p;
- XIMStyles **value;
XIMStyles *styles;
- int i;
- XIMStyles *p_style;
for (p = values; p->name != NULL; p++) {
if (strcmp(p->name, XNQueryInputStyle) == 0) {
@@ -307,7 +302,6 @@ XIMArg *values;
XICOp_t mode;
{
XIMArg *p;
- int i;
char *return_name = NULL;
for (p = values; p != NULL && p->name != NULL; p++) {
diff --git a/src/xlibi18n/XDefaultOMIF.c b/src/xlibi18n/XDefaultOMIF.c
index 1bb09dac..15e6b82c 100644
--- a/src/xlibi18n/XDefaultOMIF.c
+++ b/src/xlibi18n/XDefaultOMIF.c
@@ -41,6 +41,8 @@ interest in or to any trademark, service mark, logo or trade name of
Sun Microsystems, Inc. or its licensors is granted.
*/
+/* $XFree86: xc/lib/X11/XDefaultOMIF.c,v 1.3 2002/09/18 17:11:42 tsi Exp $ */
+
#include "Xlibint.h"
#include "Xlcint.h"
#include "XlcPublic.h"
@@ -161,6 +163,7 @@ check_charset(font_set, font_name)
return (FontData) NULL;
}
+#if 0 /* Unused */
static int
check_fontname(oc, name)
XOC oc;
@@ -214,6 +217,7 @@ char *name;
XFreeFontNames(fn_list);
return found_num;
}
+#endif
static Bool
load_font(oc)
@@ -395,7 +399,7 @@ parse_fontname(oc)
ssize_t length;
int count, num_fields;
char *base_name, *font_name, **name_list, **cur_name_list;
- char *charset_p;
+ char *charset_p = NULL;
Bool append_charset;
/*
append_charset flag should be set to True when the XLFD fontname
@@ -591,7 +595,6 @@ static Bool
create_fontset(oc)
XOC oc;
{
- XOMGenericPart *gen = XOM_GENERIC(oc->core.om);
int found_num;
if (init_fontset(oc) == False)
@@ -633,8 +636,8 @@ destroy_oc(oc)
if (oc->core.font_info.font_name_list)
XFreeStringList(oc->core.font_info.font_name_list);
- if (font_list = oc->core.font_info.font_struct_list) {
- if (font = *font_list) {
+ if ((font_list = oc->core.font_info.font_struct_list)) {
+ if ((font = *font_list)) {
if (font->fid)
XFreeFont(dpy, font);
else
@@ -686,7 +689,7 @@ static Bool
wcs_to_mbs(oc, to, from, length)
XOC oc;
char *to;
- wchar_t *from;
+ _Xconst wchar_t *from;
int length;
{
XlcConv conv = XOC_GENERIC(oc)->wcs_to_cs;
@@ -735,7 +738,7 @@ _XwcDefaultTextEscapement(oc, text, length)
{
DefineLocalBuf;
char *buf = AllocLocalBuf(length);
- int ret;
+ int ret = 0;
if (buf == NULL)
return 0;
@@ -802,7 +805,7 @@ _XwcDefaultTextExtents(oc, text, length, overall_ink, overall_logical)
{
DefineLocalBuf;
char *buf = AllocLocalBuf(length);
- int ret;
+ int ret = 0;
if (buf == NULL)
return 0;
@@ -924,7 +927,7 @@ _XwcDefaultTextPerCharExtents(oc, text, length, ink_buf, logical_buf, buf_size,
{
DefineLocalBuf;
char *buf = AllocLocalBuf(length);
- Status ret;
+ Status ret = 0;
if (buf == NULL)
return 0;
@@ -982,7 +985,7 @@ _XwcDefaultDrawString(dpy, d, oc, gc, x, y, text, length)
{
DefineLocalBuf;
char *buf = AllocLocalBuf(length);
- int ret;
+ int ret = 0;
if (buf == NULL)
return 0;
@@ -1089,7 +1092,6 @@ create_oc(om, args, num_args)
int num_args;
{
XOC oc;
- XOMGenericPart *gen = XOM_GENERIC(om);
oc = (XOC) Xmalloc(sizeof(XOCGenericRec));
if (oc == NULL)
@@ -1133,7 +1135,7 @@ close_om(om)
FontData font_data;
int count;
- if (data = gen->data) {
+ if ((data = gen->data)) {
if (data->font_data) {
for (font_data = data->font_data, count = data->font_data_count;
count-- > 0 ; font_data++) {
@@ -1239,7 +1241,6 @@ static Bool
init_om(om)
XOM om;
{
- XLCd lcd = om->core.lcd;
XOMGenericPart *gen = XOM_GENERIC(om);
OMData data;
FontData font_data;
diff --git a/src/xlibi18n/XimThai.h b/src/xlibi18n/XimThai.h
index b883a6ef..a53ce627 100644
--- a/src/xlibi18n/XimThai.h
+++ b/src/xlibi18n/XimThai.h
@@ -45,6 +45,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/lib/X11/XimThai.h,v 1.5 2001/12/14 19:54:08 dawes Exp $ */
/*
**++
@@ -65,7 +66,7 @@ SOFTWARE.
#include <X11/Xlib.h>
-/* Classification of characters in TACTIS according to WTT */
+/* Classification of characters in TIS620 according to WTT */
#define CTRL 0 /* control chars */
#define NON 1 /* non composibles */
@@ -169,6 +170,7 @@ Bool THAI_isaccepted (
#endif
);
+#if 0
Private
void THAI_apply_write_rules (
#if NeedFunctionPrototypes
@@ -186,6 +188,7 @@ int THAI_find_chtype (
int chtype
#endif
);
+#endif
Private
int THAI_apply_scm (
diff --git a/src/xlibi18n/Ximint.h b/src/xlibi18n/Ximint.h
index 17ca94a0..c7f917c5 100644
--- a/src/xlibi18n/Ximint.h
+++ b/src/xlibi18n/Ximint.h
@@ -30,6 +30,7 @@ PERFORMANCE OF THIS SOFTWARE.
makoto@sm.sony.co.jp
******************************************************************/
+/* $XFree86: xc/lib/X11/Ximint.h,v 3.10 2001/07/25 15:04:44 dawes Exp $ */
#ifndef _XIMINT_H
#define _XIMINT_H
@@ -52,7 +53,21 @@ typedef struct _Xic *Xic;
/*
* XIM dependent data
*/
+
+typedef struct _XimCommonPrivateRec {
+ /* This struct is also inlined in XimLocalPrivateRec, XimProtoPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucstoc_conv;
+ XlcConv ucstoutf8_conv;
+} XimCommonPrivateRec;
+
typedef union _XIMPrivateRec {
+ XimCommonPrivateRec common;
XimLocalPrivateRec local;
XimProtoPrivateRec proto;
} XIMPrivateRec;
@@ -98,12 +113,12 @@ typedef struct _XimDefICValues {
Window client_window;
Window focus_window;
unsigned long filter_events;
- XIMCallback geometry_callback;
+ XICCallback geometry_callback;
char *res_name;
char *res_class;
- XIMCallback destroy_callback;
- XIMCallback preedit_state_notify_callback;
- XIMCallback string_conversion_callback;
+ XICCallback destroy_callback;
+ XICCallback preedit_state_notify_callback;
+ XICCallback string_conversion_callback;
XIMStringConversionText string_conversion;
XIMResetState reset_state;
XIMHotKeyTriggers *hotkey;
@@ -169,6 +184,27 @@ typedef struct _XimDefICValues {
* Global symbols
*/
+XPointer _XimGetLocaleCode (
+#if NeedFunctionPrototypes
+ const char *encoding_name
+#endif
+);
+
+int _XimGetCharCode (
+#if NeedFunctionPrototypes
+ XPointer conv,
+ KeySym keysym,
+ unsigned char *buf,
+ int nbytes
+#endif
+);
+
+unsigned int KeySymToUcs4 (
+#if NeedFunctionPrototypes
+ KeySym keysym
+#endif
+);
+
extern Bool _XimSetIMResourceList(
#if NeedFunctionPrototypes
XIMResourceList *res_list,
@@ -555,6 +591,17 @@ extern Bool _XimErrorCallback(
#endif
);
+extern Bool _XimError(
+#if NeedFunctionPrototypes
+ Xim im,
+ Xic ic,
+ CARD16 error_code,
+ INT16 detail_length,
+ CARD16 type,
+ char *detail
+#endif
+);
+
extern Bool _XimRegisterTriggerKeysCallback(
#if NeedFunctionPrototypes
Xim im,
@@ -715,9 +762,9 @@ extern int _Ximctstombs(
#if NeedFunctionPrototypes
XIM im,
char *from,
- int from_len,
+ int from_len,
char *to,
- int to_len,
+ int to_len,
Status *state
#endif
);
@@ -733,13 +780,24 @@ extern int _Ximctstowcs(
#endif
);
+extern int _Ximctstoutf8(
+#if NeedFunctionPrototypes
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+#endif
+);
+
extern int _XimLcctstombs(
#if NeedFunctionPrototypes
XIM im,
char *from,
- int from_len,
+ int from_len,
char *to,
- int to_len,
+ int to_len,
Status *state
#endif
);
@@ -755,6 +813,17 @@ extern int _XimLcctstowcs(
#endif
);
+extern int _XimLcctstoutf8(
+#if NeedFunctionPrototypes
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+#endif
+);
+
extern void _XimSetHeader(
#if NeedFunctionPrototypes
XPointer buf,
@@ -793,6 +862,17 @@ extern int _XimProtoWcLookupString(
#endif
);
+extern int _XimProtoUtf8LookupString(
+#if NeedFunctionPrototypes
+ XIC xic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *state
+#endif
+);
+
extern void _XimRegisterFilter(
#if NeedFunctionPrototypes
Xic ic
@@ -859,6 +939,17 @@ extern int _XimLookupWCText(
#endif
);
+extern int _XimLookupUTF8Text(
+#if NeedFunctionPrototypes
+ Xic ic,
+ XKeyEvent *event,
+ char *buffer,
+ int nbytes,
+ KeySym *keysym,
+ XComposeStatus *status
+#endif
+);
+
extern EVENTMASK _XimGetWindowEventmask(
#if NeedFunctionPrototypes
Xic ic
@@ -885,8 +976,8 @@ extern Bool _XimRegisterIMInstantiateCallback(
XrmDatabase rdb,
char *res_name,
char *res_class,
- XIMProc callback,
- XPointer *client_data
+ XIDProc callback,
+ XPointer client_data
#endif
);
@@ -897,8 +988,8 @@ extern Bool _XimUnRegisterIMInstantiateCallback(
XrmDatabase rdb,
char *res_name,
char *res_class,
- XIMProc callback,
- XPointer *client_data
+ XIDProc callback,
+ XPointer client_data
#endif
);
@@ -992,14 +1083,6 @@ extern Bool _XimCbDispatch(
#endif
);
-extern void _XimGetResourceName(
-#if NeedFunctionPrototypes
- Xim im,
- char *res_name,
- char *res_class
-#endif
-);
-
extern Bool _XimLocalFilter(
#if NeedFunctionPrototypes
Display *d,
@@ -1059,6 +1142,17 @@ extern int _XimLocalWcLookupString(
#endif
);
+extern int _XimLocalUtf8LookupString(
+#if NeedFunctionPrototypes
+ XIC ic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *status
+#endif
+);
+
extern Bool _XimThaiFilter(
#if NeedFunctionPrototypes
Display *d,
diff --git a/src/xlibi18n/XimintL.h b/src/xlibi18n/XimintL.h
index 720a78bd..4c93a96c 100644
--- a/src/xlibi18n/XimintL.h
+++ b/src/xlibi18n/XimintL.h
@@ -32,6 +32,7 @@ THIS SOFTWARE.
frankyling@hgrd01.enet.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/XimintL.h,v 1.7 2001/01/17 19:41:49 dawes Exp $ */
#ifndef _XIMINTL_H
#define _XIMINTL_H
@@ -50,14 +51,23 @@ typedef struct _DefTree {
KeySym keysym; /* leaf only */
char *mb;
wchar_t *wc; /* make from mb */
+ char *utf8; /* make from mb */
KeySym ks;
} DefTree;
typedef struct _XimLocalPrivateRec {
- XIC current_ic;
- DefTree *top;
- XlcConv ctom_conv;
- XlcConv ctow_conv;
+ /* The first fields are identical with XimCommonPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucstoc_conv;
+ XlcConv ucstoutf8_conv;
+
+ XIC current_ic;
+ DefTree *top;
} XimLocalPrivateRec;
typedef struct _XicThaiPart {
diff --git a/src/xlibi18n/XimintP.h b/src/xlibi18n/XimintP.h
index 28e09e04..b56fe172 100644
--- a/src/xlibi18n/XimintP.h
+++ b/src/xlibi18n/XimintP.h
@@ -35,6 +35,7 @@ PERFORMANCE OF THIS SOFTWARE.
miyamoto@jrd.dec.com
******************************************************************/
+/* $XFree86: xc/lib/X11/XimintP.h,v 1.7 2001/01/17 19:41:49 dawes Exp $ */
#ifndef _XIMINTP_H
#define _XIMINTP_H
@@ -101,6 +102,16 @@ typedef Bool (*XimTransCallDispatcher)(
* private part of IM
*/
typedef struct _XimProtoPrivateRec {
+ /* The first fields are identical with XimCommonPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucstoc_conv;
+ XlcConv ucstoutf8_conv;
+
Window im_window;
XIMID imid;
CARD16 unused;
@@ -126,9 +137,6 @@ typedef struct _XimProtoPrivateRec {
XrmQuark *saved_imvalues;
int num_saved_imvalues;
- XlcConv ctom_conv;
- XlcConv ctow_conv;
-
/*
* transport specific
*/
diff --git a/src/xlibi18n/XlcDL.c b/src/xlibi18n/XlcDL.c
index 210bd731..126cbff2 100644
--- a/src/xlibi18n/XlcDL.c
+++ b/src/xlibi18n/XlcDL.c
@@ -41,6 +41,7 @@ interest in or to any trademark, service mark, logo or trade name of
Sun Microsystems, Inc. or its licensors is granted.
*/
+/* $XFree86: xc/lib/X11/XlcDL.c,v 1.9.2.1 2003/03/11 23:18:49 herrb Exp $ */
#include <stdio.h>
#if defined(hpux)
@@ -55,12 +56,16 @@ Sun Microsystems, Inc. or its licensors is granted.
#include "XlcPubI.h"
#ifdef _LP64
-#if defined(__sparcv9)
-#define _MACH64_NAME "sparcv9"
-#define _MACH64_NAME_LEN (sizeof (_MACH64_NAME) - 1)
-#else /* !defined(__sparcv9) */
-#error "Unknown architecture"
-#endif /* defined(__sparcv9) */
+# if defined(__sparcv9)
+# define _MACH64_NAME "sparcv9"
+# elif defined(__ia64__)
+# undef MACH64_NAME
+# else
+# error "Unknown architecture"
+# endif /* defined(__sparcv9) */
+# ifdef _MACH64_NAME
+# define _MACH64_NAME_LEN (sizeof (_MACH64_NAME) - 1)
+# endif
#endif /* _LP64 */
#define XI18N_DLREL 2
@@ -82,6 +87,7 @@ typedef struct {
char *im_register;
char *im_unregister;
int dl_release;
+ unsigned int refcount;
#if defined(hpux)
shl_t dl_module;
#else
@@ -123,6 +129,38 @@ int argsize;
return argc;
}
+static char *
+strdup_with_underscore(const char *symbol)
+{
+ char *result;
+
+ if ((result = malloc(strlen(symbol) + 2)) == NULL)
+ return NULL;
+ result[0] = '_';
+ strcpy(result + 1, symbol);
+ return result;
+}
+
+#ifndef hpux
+static void *
+try_both_dlsym (void *handle, char *name)
+{
+ void *ret;
+
+ ret = dlsym (handle, name);
+ if (!ret)
+ {
+ name = strdup_with_underscore (name);
+ if (name)
+ {
+ ret = dlsym (handle, name);
+ free (name);
+ }
+ }
+ return ret;
+}
+#endif
+
static void
resolve_object(path, lc_name)
char *path;
@@ -181,6 +219,7 @@ Limit the length of path to prevent stack buffer corruption.
xi18n_objects_list[lc_count].open = strdup(args[2]);
xi18n_objects_list[lc_count].dl_release = XI18N_DLREL;
xi18n_objects_list[lc_count].locale_name = strdup(lc_name);
+ xi18n_objects_list[lc_count].refcount = 0;
xi18n_objects_list[lc_count].dl_module = (void*)NULL;
if (n == 5) {
xi18n_objects_list[lc_count].im_register = strdup(args[3]);
@@ -203,7 +242,13 @@ const char *lc_dir;
char *path;
size_t len;
-#ifdef _LP64
+ /*
+ * reject this for possible security issue
+ */
+ if (strstr (dl_name, "../"))
+ return NULL;
+
+#if defined (_LP64) && defined (_MACH64_NAME)
len = (lc_dir ? strlen(lc_dir) : 0 ) +
(dl_name ? strlen(dl_name) : 0) + _MACH64_NAME_LEN + 10;
path = Xmalloc(len + 1);
@@ -234,6 +279,9 @@ const char *lc_dir;
#else
len = (lc_dir ? strlen(lc_dir) : 0 ) +
(dl_name ? strlen(dl_name) : 0) + 10;
+#if defined POSTLOCALELIBDIR
+ len += (strlen(POSTLOCALELIBDIR) + 1);
+#endif
path = Xmalloc(len + 1);
if (strchr(dl_name, '/') != NULL) {
@@ -241,34 +289,125 @@ const char *lc_dir;
slash_p = strrchr(lc_dir, '/');
*slash_p = '\0';
strcpy(path, lc_dir); strcat(path, "/");
+#if defined POSTLOCALELIBDIR
+ strcat(path, POSTLOCALELIBDIR); strcat(path, "/");
+#endif
strcat(path, dl_name); strcat(path, ".so.2");
*slash_p = '/';
} else {
strcpy(path, lc_dir); strcat(path, "/");
+#if defined POSTLOCALELIBDIR
+ strcat(path, POSTLOCALELIBDIR); strcat(path, "/");
+#endif
strcat(path, dl_name); strcat(path, ".so.2");
}
#endif
return path;
}
+/* We reference count dlopen() and dlclose() of modules; unfortunately,
+ * since XCloseIM, XCloseOM, XlcClose aren't wrapped, but directly
+ * call the close method of the object, we leak a reference count every
+ * time we open then close a module. Fixing this would require
+ * either creating proxy objects or hooks for close_im/close_om
+ * in XLCd
+ */
+static Bool
+open_object (object, lc_dir)
+ XI18NObjectsList object;
+ char *lc_dir;
+{
+ char *path;
+
+ if (object->refcount == 0) {
+ path = __lc_path(object->dl_name, lc_dir);
+ if (!path)
+ return False;
+#if defined(hpux)
+ object->dl_module = shl_load(path, BIND_DEFERRED, 0L);
+#else
+ object->dl_module = dlopen(path, RTLD_LAZY);
+#endif
+ Xfree(path);
+
+ if (!object->dl_module)
+ return False;
+ }
+
+ object->refcount++;
+ return True;
+}
+
+static void *
+fetch_symbol (object, symbol)
+ XI18NObjectsList object;
+ char *symbol;
+{
+ void *result = NULL;
+#if defined(hpux)
+ int getsyms_cnt, i;
+ struct shl_symbol *symbols;
+#endif
+
+ if (symbol == NULL)
+ return NULL;
+
+#if defined(hpux)
+ getsyms_cnt = shl_getsymbols(object->dl_module, TYPE_PROCEDURE,
+ EXPORT_SYMBOLS, malloc, &symbols);
+
+ for(i=0; i<getsyms_cnt; i++) {
+ if(!strcmp(symbols[i].name, symbol)) {
+ result = symbols[i].value;
+ break;
+ }
+ }
+
+ if(getsyms_cnt > 0) {
+ free(symbols);
+ }
+#else
+ result = try_both_dlsym(object->dl_module, symbol);
+#endif
+
+ return result;
+}
+
+static void
+close_object (object)
+ XI18NObjectsList object;
+{
+ object->refcount--;
+ if (object->refcount == 0)
+ {
+#if defined(hpux)
+ shl_unload(object->dl_module);
+#else
+ dlclose(object->dl_module);
+#endif
+ object->dl_module = NULL;
+ }
+}
+
+
XLCd
+#if NeedFunctionPrototypes
+_XlcDynamicLoad(const char *lc_name)
+#else
_XlcDynamicLoad(lc_name)
- char *lc_name;
+ const char *lc_name;
+#endif
{
XLCd lcd = (XLCd)NULL;
XLCd (*lc_loader)() = (XLCd(*)())NULL;
- char *path;
int count;
XI18NObjectsList objects_list;
char lc_dir[BUFSIZE];
-#if defined(hpux)
- int getsyms_cnt, i;
- struct shl_symbol *symbols;
-#endif
if (lc_name == NULL) return (XLCd)NULL;
- if (_XlcLocaleDirName(lc_dir, lc_name) == (char*)NULL) return (XLCd)NULL;
+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, (char *)lc_name) == (char*)NULL)
+ return (XLCd)NULL;
resolve_object(lc_dir, lc_name);
@@ -277,45 +416,17 @@ _XlcDynamicLoad(lc_name)
for (; count-- > 0; objects_list++) {
if (objects_list->type != XLC_OBJECT ||
strcmp(objects_list->locale_name, lc_name)) continue;
- if (!objects_list->dl_module) {
- path = __lc_path(objects_list->dl_name, lc_dir);
-#if defined(hpux)
- objects_list->dl_module = shl_load(path, BIND_DEFERRED, 0L);
-#else
- objects_list->dl_module = dlopen(path, RTLD_LAZY);
-#endif
- Xfree(path);
- if (!objects_list->dl_module) continue;
- }
-#if defined(hpux)
- getsyms_cnt = shl_getsymbols(objects_list->dl_module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
-
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, objects_list->open)) {
- lc_loader = symbols[i].value;
- break;
- }
- }
+ if (!open_object (objects_list, lc_dir))
+ continue;
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- lc_loader = (XLCd(*)())dlsym(objects_list->dl_module,
- objects_list->open);
-#endif
+ lc_loader = (XLCd(*)())fetch_symbol (objects_list, objects_list->open);
if (!lc_loader) continue;
lcd = (*lc_loader)(lc_name);
if (lcd != (XLCd)NULL) {
break;
}
-#if defined(hpux)
- shl_unload(objects_list->dl_module);
-#else
- dlclose(objects_list->dl_module);
-#endif
- objects_list->dl_module = NULL;
+
+ close_object (objects_list);
}
return (XLCd)lcd;
}
@@ -333,65 +444,32 @@ char *res_name, *res_class;
#endif
{
XIM im = (XIM)NULL;
- char *path;
char lc_dir[BUFSIZE];
char *lc_name;
XIM (*im_openIM)() = (XIM(*)())NULL;
int count;
XI18NObjectsList objects_list = xi18n_objects_list;
-#if defined(hpux)
- int getsyms_cnt, i;
- struct shl_symbol *symbols;
-#endif
lc_name = lcd->core->name;
- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return (XIM)0;
+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return (XIM)0;
count = lc_count;
for (; count-- > 0; objects_list++) {
if (objects_list->type != XIM_OBJECT ||
strcmp(objects_list->locale_name, lc_name)) continue;
- if (!objects_list->dl_module) {
- path = __lc_path(objects_list->dl_name, lc_dir);
-#if defined(hpux)
- objects_list->dl_module = shl_load(path, BIND_DEFERRED, 0L);
-#else
- objects_list->dl_module = dlopen(path, RTLD_LAZY);
-#endif
- Xfree(path);
- if (!objects_list->dl_module) continue;
- }
-#if defined(hpux)
- getsyms_cnt = shl_getsymbols(objects_list->dl_module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, objects_list->open)) {
- im_openIM = symbols[i].value;
- break;
- }
- }
+ if (!open_object (objects_list, lc_dir))
+ continue;
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- im_openIM = (XIM(*)())dlsym(objects_list->dl_module,
- objects_list->open);
+ im_openIM = (XIM(*)())fetch_symbol(objects_list, objects_list->open);
if (!im_openIM) continue;
-#endif
im = (*im_openIM)(lcd, display, rdb, res_name, res_class);
if (im != (XIM)NULL) {
- break;
+ break;
}
- im_openIM = 0;
-#if defined(hpux)
- shl_unload(objects_list->dl_module);
-#else
- dlclose(objects_list->dl_module);
-#endif
- objects_list->dl_module = NULL;
+
+ close_object (objects_list);
}
return (XIM)im;
}
@@ -407,7 +485,6 @@ char *res_name, *res_class;
XIMProc callback;
XPointer *client_data;
{
- char *path;
char lc_dir[BUFSIZE];
char *lc_name;
Bool (*im_registerIM)() = (Bool(*)())NULL;
@@ -421,53 +498,24 @@ XPointer *client_data;
lc_name = lcd->core->name;
- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return False;
+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return False;
count = lc_count;
for (; count-- > 0; objects_list++) {
if (objects_list->type != XIM_OBJECT ||
strcmp(objects_list->locale_name, lc_name)) continue;
- if (!objects_list->dl_module) {
- path = __lc_path(objects_list->dl_name, lc_dir);
-#if defined(hpux)
- objects_list->dl_module = shl_load(path, BIND_DEFERRED, 0L);
-#else
- objects_list->dl_module = dlopen(path, RTLD_LAZY);
-#endif
- Xfree(path);
- if (!objects_list->dl_module) continue;
- }
-#if defined(hpux)
- getsyms_cnt = shl_getsymbols(objects_list->dl_module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
-
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, objects_list->open)) {
- im_registerIM = symbols[i].value;
- break;
- }
- }
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- im_registerIM = (Bool(*)())dlsym(objects_list->dl_module,
- objects_list->im_register);
+ if (!open_object (objects_list, lc_dir))
+ continue;
+ im_registerIM = (Bool(*)())fetch_symbol(objects_list,
+ objects_list->im_register);
if (!im_registerIM) continue;
-#endif
ret_flag = (*im_registerIM)(lcd, display, rdb,
res_name, res_class,
callback, client_data);
if (ret_flag) break;
- im_registerIM = 0;
-#if defined(hpux)
- shl_unload(objects_list->dl_module);
-#else
- dlclose(objects_list->dl_module);
-#endif
- objects_list->dl_module = NULL;
+ close_object (objects_list);
}
return (Bool)ret_flag;
}
@@ -483,7 +531,6 @@ char *res_name, *res_class;
XIMProc callback;
XPointer *client_data;
{
- char *path;
char lc_dir[BUFSIZE];
char *lc_name;
Bool (*im_unregisterIM)() = (Bool(*)())NULL;
@@ -496,61 +543,38 @@ XPointer *client_data;
#endif
lc_name = lcd->core->name;
- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return False;
+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return False;
count = lc_count;
for (; count-- > 0; objects_list++) {
if (objects_list->type != XIM_OBJECT ||
strcmp(objects_list->locale_name, lc_name)) continue;
- if (!objects_list->dl_module) {
- path = __lc_path(objects_list->dl_name, lc_dir);
-#if defined(hpux)
- objects_list->dl_module = shl_load(path, BIND_DEFERRED, 0L);
-#else
- objects_list->dl_module = dlopen(path, RTLD_LAZY);
-#endif
- Xfree(path);
- if (!objects_list->dl_module) continue;
- }
-#if defined(hpux)
- getsyms_cnt = shl_getsymbols(objects_list->dl_module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, objects_list->open)) {
- im_unregisterIM = symbols[i].value;
- break;
- }
- }
+ if (!objects_list->refcount) /* Must already be opened */
+ continue;
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- im_unregisterIM = (Bool(*)())dlsym(objects_list->dl_module,
- objects_list->im_unregister);
+ im_unregisterIM = (Bool(*)())fetch_symbol(objects_list,
+ objects_list->im_unregister);
if (!im_unregisterIM) continue;
-#endif
ret_flag = (*im_unregisterIM)(lcd, display, rdb,
res_name, res_class,
callback, client_data);
- if (ret_flag) break;
-
- im_unregisterIM = 0;
-#if defined(hpux)
- shl_unload(objects_list->dl_module);
-#else
- dlclose(objects_list->dl_module);
-#endif
- objects_list->dl_module = NULL;
+ if (ret_flag) {
+ close_object (objects_list); /* opened in RegisterIMInstantiateCallback */
+ break;
+ }
}
return (Bool)ret_flag;
}
Bool
+#if NeedFunctionPrototypes
+_XInitDynamicIM(XLCd lcd)
+#else
_XInitDynamicIM(lcd)
XLCd lcd;
+#endif
{
if(lcd == (XLCd)NULL)
return False;
@@ -575,7 +599,6 @@ char *res_class;
{
XOM om = (XOM)NULL;
int count;
- char *path;
char lc_dir[BUFSIZE];
char *lc_name;
XOM (*om_openOM)() = (XOM(*)())NULL;
@@ -587,59 +610,33 @@ char *res_class;
lc_name = lcd->core->name;
- if (_XlcLocaleDirName(lc_dir, lc_name) == NULL) return (XOM)0;
+ if (_XlcLocaleDirName(lc_dir, BUFSIZE, lc_name) == NULL) return (XOM)0;
count = lc_count;
for (; count-- > 0; objects_list++) {
if (objects_list->type != XOM_OBJECT ||
strcmp(objects_list->locale_name, lc_name)) continue;
- if (!objects_list->dl_module) {
- path = __lc_path(objects_list->dl_name, lc_dir);
-#if defined(hpux)
- objects_list->dl_module = shl_load(path, BIND_DEFERRED, 0L);
-#else
- objects_list->dl_module = dlopen(path, RTLD_LAZY);
-#endif
- Xfree(path);
- if (!objects_list->dl_module) continue;
- }
-#if defined(hpux)
- getsyms_cnt = shl_getsymbols(objects_list->dl_module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
-
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, objects_list->open)) {
- om_openOM = symbols[i].value;
- break;
- }
- }
-
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- om_openOM = (XOM(*)())dlsym(objects_list->dl_module,
- objects_list->open);
+ if (!open_object (objects_list, lc_dir))
+ continue;
+
+ om_openOM = (XOM(*)())fetch_symbol(objects_list, objects_list->open);
if (!om_openOM) continue;
-#endif
om = (*om_openOM)(lcd, display, rdb, res_name, res_class);
if (om != (XOM)NULL) {
- break;
+ break;
}
- om_openOM = 0;
-#if defined(hpux)
- shl_unload(objects_list->dl_module);
-#else
- dlclose(objects_list->dl_module);
-#endif
- objects_list->dl_module = NULL;
+ close_object(objects_list);
}
return (XOM)om;
}
Bool
+#if NeedFunctionPrototypes
+_XInitDynamicOM(XLCd lcd)
+#else
_XInitDynamicOM(lcd)
XLCd lcd;
+#endif
{
if(lcd == (XLCd)NULL)
return False;
diff --git a/src/xlibi18n/XlcGeneric.h b/src/xlibi18n/XlcGeneric.h
index 96f49fe8..a762917e 100644
--- a/src/xlibi18n/XlcGeneric.h
+++ b/src/xlibi18n/XlcGeneric.h
@@ -31,6 +31,7 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/XlcGeneric.h,v 1.4 2001/07/25 15:04:44 dawes Exp $ */
#ifndef _XLCGENERIC_H_
#define _XLCGENERIC_H_
@@ -93,6 +94,7 @@ typedef struct _CodeSetRec {
ExtdSegment ctextseg;
ParseInfo parse_info;
unsigned long wc_encoding;
+ Bool string_encoding;
} CodeSetRec, *CodeSet;
typedef enum {
@@ -129,10 +131,8 @@ typedef struct _XLCdGenericPart {
CodeSet initial_state_GR;
int segment_conv_num; /* UDC */
SegConv segment_conv; /* UDC */
-#ifndef X_NOT_STDC_ENV
Bool use_stdc_env;
Bool force_convert_to_mb;
-#endif
} XLCdGenericPart;
typedef struct _XLCdGenericRec {
diff --git a/src/xlibi18n/XlcPubI.h b/src/xlibi18n/XlcPubI.h
index 0234f0f4..0fbe337a 100644
--- a/src/xlibi18n/XlcPubI.h
+++ b/src/xlibi18n/XlcPubI.h
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/XlcPubI.h,v 3.9.6.1 2003/03/11 23:18:49 herrb Exp $ */
#ifndef _XLCPUBLICI_H_
#define _XLCPUBLICI_H_
@@ -40,40 +41,30 @@
typedef struct _XLCdPublicMethodsRec *XLCdPublicMethods;
typedef XLCd (*XlcPubCreateProc)(
-#if NeedFunctionPrototypes
- char* /* name */,
- XLCdMethods /* methods */
-#endif
+ const char* name,
+ XLCdMethods methods
);
typedef Bool (*XlcPubInitializeProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
typedef void (*XlcPubDestroyProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
typedef char* (*XlcPubGetValuesProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- XlcArgList /* args */,
- int /* num_args */
-#endif
+ XLCd lcd,
+ XlcArgList args,
+ int num_args
);
typedef void (*XlcPubGetResourceProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* category */,
- char* /* class */,
- char*** /* value */,
- int* /* count */
-#endif
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
);
typedef struct _XLCdPublicMethodsPart {
@@ -102,7 +93,7 @@ typedef struct _XLCdPublicPart {
char *encoding_name; /* encoding name */
int mb_cur_max; /* ANSI C MB_CUR_MAX */
Bool is_state_depend; /* state-depend encoding */
- char *default_string; /* for XDefaultString() */
+ const char *default_string; /* for XDefaultString() */
XPointer xlocale_db;
} XLCdPublicPart;
@@ -116,63 +107,61 @@ extern XLCdMethods _XlcPublicMethods;
_XFUNCPROTOBEGIN
extern XLCd _XlcCreateLC(
-#if NeedFunctionPrototypes
- char* /* name */,
- XLCdMethods /* methods */
-#endif
+ const char* name,
+ XLCdMethods methods
);
extern void _XlcDestroyLC(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
+/* Fills into a freshly created XlcCharSet the fields that can be inferred
+ from the ESC sequence. These are side, char_size, set_size. */
extern Bool _XlcParseCharSet(
-#if NeedFunctionPrototypes
- XlcCharSet /* charset */
-#endif
+ XlcCharSet charset
);
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes). */
extern XlcCharSet _XlcCreateDefaultCharSet(
-#if NeedFunctionPrototypes
- char* /* name */,
- char* /* control_sequence */
-#endif
+ const char* name,
+ const char* ct_sequence
);
extern XlcCharSet _XlcAddCT(
-#if NeedFunctionPrototypes
- char* /* name */,
- char* /* control_sequence */
-#endif
+ const char* name,
+ const char* ct_sequence
);
+extern Bool _XlcInitCTInfo (void);
+
extern XrmMethods _XrmDefaultInitParseInfo(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- XPointer* /* state */
-#endif
+ XLCd lcd,
+ XPointer* state
);
extern int _XmbTextPropertyToTextList(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* dpy */,
- XTextProperty* /* text_prop */,
- char*** /* list_ret */,
- int* /* count_ret */
-#endif
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
);
extern int _XwcTextPropertyToTextList(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* dpy */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_ret */,
- int* /* count_ret */
-#endif
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ wchar_t*** list_ret,
+ int* count_ret
+);
+
+extern int _Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
);
extern int _XmbTextListToTextProperty(
@@ -197,6 +186,17 @@ extern int _XwcTextListToTextProperty(
#endif
);
+extern int _Xutf8TextListToTextProperty(
+#if NeedFunctionPrototypes
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
extern void _XwcFreeStringList(
#if NeedFunctionPrototypes
XLCd /* lcd */,
@@ -205,46 +205,37 @@ extern void _XwcFreeStringList(
);
extern int _XlcResolveLocaleName(
-#if NeedFunctionPrototypes
- char* /* lc_name */,
- XLCdPublicPart* /* pub */
-#endif
+ const char* lc_name,
+ XLCdPublicPart* pub
);
extern int _XlcResolveI18NPath(
-#if NeedFunctionPrototypes
- char* /* buf */,
- int /* buf_len */
-#endif
+ char* buf,
+ int buf_len
);
extern char *_XlcLocaleDirName(
#if NeedFunctionPrototypes
- char* /* dir_name */,
- char* /* lc_name */
+ char* /* dir_name */,
+ size_t, /* dir_len */
+ char* /* lc_name */
#endif
);
extern XPointer _XlcCreateLocaleDataBase(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
extern void _XlcDestroyLocaleDataBase(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
extern void _XlcGetLocaleDataBase(
-#if NeedFunctionPrototypes
XLCd /* lcd */,
- char* /* category */,
- char* /* name */,
+ const char* /* category */,
+ const char* /* name */,
char*** /* value */,
int* /* count */
-#endif
);
_XFUNCPROTOEND
diff --git a/src/xlibi18n/XlcPublic.h b/src/xlibi18n/XlcPublic.h
index 0deb44c1..dc866703 100644
--- a/src/xlibi18n/XlcPublic.h
+++ b/src/xlibi18n/XlcPublic.h
@@ -31,65 +31,137 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/XlcPublic.h,v 1.9 2001/01/17 19:41:49 dawes Exp $ */
+/*
+ * Most of this API is documented in i18n/Framework.PS
+ */
#ifndef _XLCPUBLIC_H_
#define _XLCPUBLIC_H_
#include "Xlcint.h"
-#define XlcNCharSize "charSize"
-#define XlcNCodeset "codeset"
-#define XlcNControlSequence "controlSequence"
-#define XlcNDefaultString "defaultString"
-#define XlcNEncodingName "encodingName"
-#define XlcNLanguage "language"
-#define XlcNMbCurMax "mbCurMax"
-#define XlcNName "name"
-#define XlcNSetSize "setSize"
-#define XlcNSide "side"
-#define XlcNStateDependentEncoding "stateDependentEncoding"
-#define XlcNTerritory "territory"
+/*
+ * Character sets.
+ */
+
+/* Every character set has a "side". It denotes the range of byte values for
+ which the character set is responsible. This means that the character
+ set's encoded characters will only assumes bytes within the range, and
+ that the character set can be used simultaneously with another character
+ set responsible for a disjoint range. */
typedef enum {
- XlcUnknown, XlcC0, XlcGL, XlcC1, XlcGR, XlcGLGR, XlcOther, XlcNONE
+ XlcUnknown,
+ XlcC0, /* responsible for values 0x00..0x1F */
+ XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */
+ XlcC1, /* responsible for values 0x80..0x9F */
+ XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */
+ XlcGLGR, /* responsible for values 0x00..0xFF */
+ XlcOther, /* unused */
+ XlcNONE
} XlcSide;
-typedef struct _FontScope {
- unsigned long start;
- unsigned long end;
- unsigned long shift;
- unsigned long shift_direction;
-} FontScopeRec, *FontScope;
-
+/* Data read from XLC_LOCALE files.
+ XXX Apparently superseded by _XUDCGlyphRegion. */
typedef struct _UDCArea {
- unsigned long start,end;
+ unsigned long start;
+ unsigned long end;
} UDCAreaRec, *UDCArea;
-typedef struct _XlcCharSetRec *XlcCharSet;
+/* Where the character set comes from. */
+typedef enum {
+ CSsrcUndef, /* unused */
+ CSsrcStd, /* defined in libX11 */
+ CSsrcXLC /* defined in an XLC_LOCALE file */
+} CSSrc;
-typedef char* (*XlcGetCSValuesProc)(
-#if NeedFunctionPrototypes
- XlcCharSet /* charset */,
- XlcArgList /* args */,
- int /* num_args */
-#endif
-);
+/* These are the supported properties of XlcCharSet. */
+#define XlcNCharSize "charSize"
+#define XlcNControlSequence "controlSequence"
+#define XlcNEncodingName "encodingName"
+#define XlcNName "name"
+#define XlcNSetSize "setSize"
+#define XlcNSide "side"
+/* This is the structure of an XlcCharSet.
+ Once allocated, they are never freed. */
typedef struct _XlcCharSetRec {
- char *name; /* character set name */
+ /* Character set name, including side suffix */
+ const char *name;
XrmQuark xrm_name;
- char *encoding_name; /* XLFD encoding name */
+
+ /* XLFD encoding name, no side suffix */
+ const char *encoding_name;
XrmQuark xrm_encoding_name;
- XlcSide side; /* GL, GR or others */
- int char_size; /* number of bytes per character */
- int set_size; /* graphic character sets */
- char *ct_sequence; /* control sequence of CT */
- XlcGetCSValuesProc get_values;
- /* UDC */
+
+ /* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */
+ XlcSide side;
+
+ /* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */
+ int char_size;
+ /* Classification of the character set according to ISO-2022 */
+ int set_size; /* e.g. 94 or 96 */
+ const char *ct_sequence; /* control sequence of CT */
+ /* (normally at most 4 bytes) */
+
+ /* for UDC */
Bool string_encoding;
UDCArea udc_area;
int udc_area_num;
-} XlcCharSetRec;
+
+ /* Description source */
+ CSSrc source;
+} XlcCharSetRec, *XlcCharSet;
+
+_XFUNCPROTOBEGIN
+
+/* Returns the charset with the given name (including side suffix).
+ Returns NULL if not found. */
+extern XlcCharSet _XlcGetCharSet(
+ const char* name
+);
+
+/* Returns the charset with the given encoding (no side suffix) and
+ responsible for at least the given side (XlcGL or XlcGR).
+ Returns NULL if not found. */
+extern XlcCharSet _XlcGetCharSetWithSide(
+ const char* encoding_name,
+ XlcSide side
+);
+
+/* Registers an XlcCharSet in the list of character sets.
+ Returns True if successful. */
+extern Bool _XlcAddCharSet(
+ XlcCharSet charset
+);
+
+/* Retrieves a number of attributes of an XlcCharSet.
+ Return NULL if successful, otherwise the name of the first argument
+ specifiying a nonexistent attribute. */
+extern char *_XlcGetCSValues(
+#if NeedVarargsPrototypes
+ XlcCharSet charset,
+ ...
+#endif
+);
+
+_XFUNCPROTOEND
+
+
+#define XlcNCodeset "codeset"
+#define XlcNDefaultString "defaultString"
+#define XlcNLanguage "language"
+#define XlcNMbCurMax "mbCurMax"
+#define XlcNStateDependentEncoding "stateDependentEncoding"
+#define XlcNTerritory "territory"
+
+typedef struct _FontScope {
+ unsigned long start;
+ unsigned long end;
+ unsigned long shift;
+ unsigned long shift_direction;
+} FontScopeRec, *FontScope;
/*
* conversion methods
@@ -98,12 +170,10 @@ typedef struct _XlcCharSetRec {
typedef struct _XlcConvRec *XlcConv;
typedef XlcConv (*XlcOpenConverterProc)(
-#if NeedFunctionPrototypes
- XLCd /* from_lcd */,
- char* /* from_type */,
- XLCd /* to_lcd */,
- char* /* to_type */
-#endif
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
);
typedef void (*XlcCloseConverterProc)(
@@ -144,9 +214,12 @@ typedef struct _XlcConvMethodsRec{
#define XlcNWideChar "wideChar"
#define XlcNCompoundText "compoundText"
#define XlcNString "string"
+#define XlcNUtf8String "utf8String"
#define XlcNCharSet "charSet"
#define XlcNCTCharSet "CTcharSet"
+#define XlcNFontCharSet "FontCharSet"
#define XlcNChar "char"
+#define XlcNUcsChar "UCSchar"
typedef struct _XlcConvRec {
XlcConvMethods methods;
@@ -175,83 +248,50 @@ extern char *_XGetLCValues(
#endif
);
-extern XlcCharSet _XlcGetCharSet(
-#if NeedFunctionPrototypes
- char* /* name */
-#endif
-);
-
-extern Bool _XlcAddCharSet(
-#if NeedFunctionPrototypes
- XlcCharSet /* charset */
-#endif
-);
-
-extern char *_XlcGetCSValues(
-#if NeedVarargsPrototypes
- XlcCharSet /* charset */,
- ...
-#endif
-);
-
extern XlcConv _XlcOpenConverter(
-#if NeedFunctionPrototypes
- XLCd /* from_lcd */,
- char* /* from_type */,
- XLCd /* to_lcd */,
- char* /* to_type */
-#endif
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
);
extern void _XlcCloseConverter(
-#if NeedFunctionPrototypes
- XlcConv /* conv */
-#endif
+ XlcConv conv
);
extern int _XlcConvert(
-#if NeedFunctionPrototypes
- XlcConv /* conv */,
- XPointer* /* from */,
- int* /* from_left */,
- XPointer* /* to */,
- int* /* to_left */,
- XPointer* /* args */,
- int /* num_args */
-#endif
+ XlcConv conv,
+ XPointer* from,
+ int* from_left,
+ XPointer* to,
+ int* to_left,
+ XPointer* args,
+ int num_args
);
extern void _XlcResetConverter(
-#if NeedFunctionPrototypes
- XlcConv /* conv */
-#endif
+ XlcConv conv
);
extern Bool _XlcSetConverter(
-#if NeedFunctionPrototypes
- XLCd /* from_lcd */,
- char* /* from_type */,
- XLCd /* to_lcd */,
- char* /* to_type */,
- XlcOpenConverterProc /* open_converter */
-#endif
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type,
+ XlcOpenConverterProc open_converter
);
extern void _XlcGetResource(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* category */,
- char* /* class */,
- char*** /* value */,
- int* /* count */
-#endif
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
);
extern char *_XlcFileName(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* category */
-#endif
+ XLCd lcd,
+ const char* category
);
extern int _Xwcslen(
@@ -267,19 +307,19 @@ extern wchar_t *_Xwcscpy(
#endif
);
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
extern int _XlcCompareISOLatin1(
-#if NeedFunctionPrototypes
- char* /* str1 */,
- char* /* str2 */
-#endif
+ const char* str1,
+ const char* str2
);
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
extern int _XlcNCompareISOLatin1(
-#if NeedFunctionPrototypes
- char* /* str1 */,
- char* /* str2 */,
- int /* len */
-#endif
+ const char* str1,
+ const char* str2,
+ int len
);
_XFUNCPROTOEND
diff --git a/src/xlibi18n/Xlcint.h b/src/xlibi18n/Xlcint.h
index 60041e7e..a216dba6 100644
--- a/src/xlibi18n/Xlcint.h
+++ b/src/xlibi18n/Xlcint.h
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/Xlcint.h,v 3.14 2002/11/01 13:43:31 alanh Exp $ */
/*
* Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
@@ -71,9 +72,11 @@ from The Open Group.
#ifndef _XLCINT_H_
#define _XLCINT_H_
+#ifndef _XP_PRINT_SERVER_
+
#include <X11/Xresource.h>
#include <X11/Xutil.h>
-#include "Xvarargs.h"
+#include <stdarg.h>
typedef Bool (*XFilterEventProc)(
#if NeedFunctionPrototypes
@@ -135,12 +138,12 @@ typedef struct {
XFontSet fontset;
int line_spacing;
Cursor cursor;
- XIMCallback start_callback;
- XIMCallback done_callback;
- XIMCallback draw_callback;
- XIMCallback caret_callback;
+ XICCallback start_callback;
+ XICCallback done_callback;
+ XICCallback draw_callback;
+ XICCallback caret_callback;
XIMPreeditState preedit_state;
- XIMCallback state_notify_callback;
+ XICCallback state_notify_callback;
} ICPreeditAttributes, *ICPreeditAttributesPtr;
typedef struct {
@@ -154,54 +157,62 @@ typedef struct {
XFontSet fontset;
int line_spacing;
Cursor cursor;
- XIMCallback start_callback;
- XIMCallback done_callback;
- XIMCallback draw_callback;
+ XICCallback start_callback;
+ XICCallback done_callback;
+ XICCallback draw_callback;
} ICStatusAttributes, *ICStatusAttributesPtr;
+#endif /* !_XP_PRINT_SERVER_ */
+
/*
* Methods for Xrm parsing
*/
+/* The state is a pointer to an object created by the locale's
+ init_parse_info function (default: _XrmDefaultInitParseInfo). */
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to the XmbCharProc. */
typedef void (*XmbInitProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+ XPointer state
);
+/* Transforms one multibyte character, starting at str, and return a 'char'
+ in the same parsing class (not a wide character!). Returns the number of
+ consumed bytes in *lenp. */
typedef char (*XmbCharProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */,
- char* /* str */,
- int* /* lenp */
-#endif
+ XPointer state,
+ const char * str,
+ int* lenp
);
+/* Terminates a sequence of calls to the XmbCharProc. */
typedef void (*XmbFinishProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+ XPointer state
);
-typedef char* (*XlcNameProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+/* Returns the name of the state's locale, as a static string. */
+typedef const char* (*XlcNameProc)(
+ XPointer state
);
+/* Frees the state, which was allocated by the locale's init_parse_info
+ function. */
typedef void (*XrmDestroyProc)(
-#if NeedFunctionPrototypes
- XPointer /* state */
-#endif
+ XPointer state
);
+/* Set of methods for Xrm parsing. */
typedef struct {
XmbInitProc mbinit;
XmbCharProc mbchar;
XmbFinishProc mbfinish;
XlcNameProc lcname;
XrmDestroyProc destroy;
-} XrmMethodsRec, *XrmMethods;
+} XrmMethodsRec;
+typedef const XrmMethodsRec *XrmMethods;
+
+#ifndef _XP_PRINT_SERVER_
typedef struct _XLCd *XLCd; /* need forward reference */
@@ -218,8 +229,8 @@ typedef void (*XCloseLCProc)(
typedef char* (*XlcMapModifiersProc)(
#if NeedFunctionPrototypes
XLCd /* lcd */,
- char* /* user_mods */,
- char* /* prog_mods */
+ _Xconst char* /* user_mods */,
+ _Xconst char* /* prog_mods */
#endif
);
@@ -250,8 +261,8 @@ typedef Bool (*XRegisterIMInstantiateCBProc)(
XrmDatabase /* rdb */,
char* /* res_name */,
char* /* res_class */,
- XIMProc /* callback */,
- XPointer* /* client_data */
+ XIDProc /* callback */,
+ XPointer /* client_data */
#endif
);
@@ -262,8 +273,8 @@ typedef Bool (*XUnregisterIMInstantiateCBProc)(
XrmDatabase /* rdb */,
char* /* res_name */,
char* /* res_class */,
- XIMProc /* callback */,
- XPointer* /* client_data */
+ XIDProc /* callback */,
+ XPointer /* client_data */
#endif
);
@@ -275,58 +286,46 @@ typedef XrmMethods (*XrmInitParseInfoProc)(
);
typedef int (*XmbTextPropertyToTextListProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- XTextProperty* /* text_prop */,
- char*** /* list_return */,
- int* /* count_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
);
typedef int (*XwcTextPropertyToTextListProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- XTextProperty* /* text_prop */,
- wchar_t*** /* list_return */,
- int* /* count_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
);
typedef int (*XmbTextListToTextPropertyProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
typedef int (*XwcTextListToTextPropertyProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- Display* /* display */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop_return */
-#endif
+ XLCd lcd,
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
);
typedef void (*XwcFreeStringListProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- wchar_t** /* list */
-#endif
+ XLCd lcd,
+ wchar_t** list
);
-typedef char* (*XDefaultStringProc)(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+typedef const char* (*XDefaultStringProc)(
+ XLCd lcd
);
typedef struct {
@@ -337,8 +336,10 @@ typedef struct {
XrmInitParseInfoProc init_parse_info;
XmbTextPropertyToTextListProc mb_text_prop_to_list;
XwcTextPropertyToTextListProc wc_text_prop_to_list;
+ XmbTextPropertyToTextListProc utf8_text_prop_to_list;
XmbTextListToTextPropertyProc mb_text_list_to_prop;
XwcTextListToTextPropertyProc wc_text_list_to_prop;
+ XmbTextListToTextPropertyProc utf8_text_list_to_prop;
XwcFreeStringListProc wc_free_string_list;
XDefaultStringProc default_string;
XRegisterIMInstantiateCBProc register_callback;
@@ -609,6 +610,14 @@ typedef struct {
XwcTextPerCharExtentsProc wc_extents_per_char;
XwcDrawStringProc wc_draw_string;
XwcDrawImageStringProc wc_draw_image_string;
+
+ /* UTF-8 text drawing methods */
+
+ XmbTextEscapementProc utf8_escapement;
+ XmbTextExtentsProc utf8_extents;
+ XmbTextPerCharExtentsProc utf8_extents_per_char;
+ XmbDrawStringProc utf8_draw_string;
+ XmbDrawImageStringProc utf8_draw_image_string;
} XOCMethodsRec, *XOCMethods;
@@ -683,6 +692,11 @@ typedef struct {
XIM, char*, int, wchar_t*, int, Status *
#endif
);
+ int (*ctstoutf8)(
+#if NeedFunctionPrototypes
+ XIM, char*, int, char*, int, Status *
+#endif
+ );
} XIMMethodsRec, *XIMMethods;
/*
@@ -766,6 +780,11 @@ typedef struct {
XIC
#endif
);
+ char* (*utf8_reset)(
+#if NeedFunctionPrototypes
+ XIC
+#endif
+ );
int (*mb_lookup_string)(
#if NeedFunctionPrototypes
XIC, XKeyEvent*, char*, int, KeySym*, Status*
@@ -776,6 +795,11 @@ typedef struct {
XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
#endif
);
+ int (*utf8_lookup_string)(
+#if NeedFunctionPrototypes
+ XIC, XKeyEvent*, char*, int, KeySym*, Status*
+#endif
+ );
} XICMethodsRec, *XICMethods;
@@ -791,12 +815,12 @@ typedef struct {
XIMStyle input_style; /* IM's input style */
Window focus_window; /* where key events go */
unsigned long filter_events; /* event mask from IM */
- XIMCallback geometry_callback; /* client callback */
+ XICCallback geometry_callback; /* client callback */
char * res_name;
char * res_class;
- XIMCallback destroy_callback;
- XIMCallback string_conversion_callback;
+ XICCallback destroy_callback;
+ XICCallback string_conversion_callback;
XIMStringConversionText string_conversion;
XIMResetState reset_state;
XIMHotKeyTriggers *hotkey;
@@ -821,45 +845,34 @@ typedef struct _XIC {
#define NeedFunctionPrototypes 1
#endif
+/* If the argument 'name' is appropriate for this loader, it instantiates an
+ XLCd object with appropriate locale methods and returns it. May return
+ NULL; in this case, the remaining loaders are tried. */
typedef XLCd (*XLCdLoadProc)(
-#if NeedFunctionPrototypes
- char*
-#endif
+ const char* name
);
_XFUNCPROTOBEGIN
extern XLCd _XOpenLC(
-#if NeedFunctionPrototypes
- char* /* name */
-#endif
+ const char* name
);
extern void _XCloseLC(
-#if NeedFunctionPrototypes
- XLCd /* lcd */
-#endif
+ XLCd lcd
);
-extern XLCd _XlcCurrentLC(
-#if NeedFunctionPrototypes
- void
-#endif
-);
+extern XLCd _XlcCurrentLC (void);
extern Bool _XlcValidModSyntax(
-#if NeedFunctionPrototypes
- char* /* mods */,
- char** /* valid */
-#endif
+ const char* mods,
+ const char* const * valid
);
extern char *_XlcDefaultMapModifiers(
-#if NeedFunctionPrototypes
- XLCd /* lcd */,
- char* /* user_mods */,
- char* /* prog_mods */
-#endif
+ XLCd lcd,
+ _Xconst char* user_mods,
+ _Xconst char* prog_mods
);
extern void _XIMCompileResourceList(
@@ -885,9 +898,7 @@ extern char ** _XParseBaseFontNameList(
);
extern XrmMethods _XrmInitParseInfo(
-#if NeedFunctionPrototypes
- XPointer* /* statep */
-#endif
+ XPointer* statep
);
extern void _XRegisterFilterByMask(
@@ -942,62 +953,125 @@ extern void _XUnregisterFilter(
);
extern void _XlcCountVaList(
-#if NeedFunctionPrototypes
- va_list /* var */,
- int* /* count_return */
-#endif
+ va_list var,
+ int* count_return
);
extern void _XlcVaToArgList(
-#if NeedFunctionPrototypes
- va_list /* var */,
- int /* count */,
- XlcArgList* /* args_return */
-#endif
+ va_list var,
+ int count,
+ XlcArgList* args_return
);
extern void _XlcCompileResourceList(
-#if NeedFunctionPrototypes
- XlcResourceList /* resources */,
- int /* num_resources */
-#endif
+ XlcResourceList resources,
+ int num_resources
);
extern char *_XlcGetValues(
-#if NeedFunctionPrototypes
- XPointer /* base */,
- XlcResourceList /* resources */,
- int /* num_resources */,
- XlcArgList /* args */,
- int /* num_args */,
- unsigned long /* mask */
-#endif
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
);
extern char *_XlcSetValues(
-#if NeedFunctionPrototypes
- XPointer /* base */,
- XlcResourceList /* resources */,
- int /* num_resources */,
- XlcArgList /* args */,
- int /* num_args */,
- unsigned long /* mask */
-#endif
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
);
+/* documented in i18n/Framework.PS */
+extern void _XlcInitLoader (void);
+
+extern void _XlcDeInitLoader (void);
+
+/* documented in i18n/Framework.PS */
+/* Returns True on success, False on failure. */
extern Bool _XlcAddLoader(
-#if NeedFunctionPrototypes
- XLCdLoadProc /* proc */,
- XlcPosition /* position */
-#endif
+ XLCdLoadProc proc,
+ XlcPosition position
);
+/* documented in i18n/Framework.PS */
extern void _XlcRemoveLoader(
-#if NeedFunctionPrototypes
- XLCdLoadProc /* proc */
-#endif
+ XLCdLoadProc proc
+);
+
+/* Registers UTF-8 converters for a non-UTF-8 locale. */
+extern void _XlcAddUtf8Converters(
+ XLCd lcd
+);
+
+/* Registers UTF-8 converters for a UTF-8 locale. */
+extern void _XlcAddUtf8LocaleConverters(
+ XLCd lcd
+);
+
+/* The default locale loader. Assumes an ASCII encoding. */
+extern XLCd _XlcDefaultLoader(
+ const char* name
+);
+
+/* The generic locale loader. Suitable for all encodings except UTF-8.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcGenericLoader(
+ const char* name
+);
+
+/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcUtf8Loader(
+ const char* name
+);
+
+/* The old EUC locale loader. */
+extern XLCd _XlcEucLoader(
+ const char* name
+);
+
+/* The old SJIS locale loader. */
+extern XLCd _XlcSjisLoader(
+ const char* name
+);
+
+/* The old ISO-2022-JP locale loader. */
+extern XLCd _XlcJisLoader(
+ const char* name
+);
+
+extern XLCd _XlcDynamicLoad(
+ const char* name
+);
+
+/* The old dynamic loader. */
+extern XLCd _XlcDynamicLoader(
+ const char* name
+);
+
+extern Bool _XInitDefaultIM(
+ XLCd lcd
+);
+
+extern Bool _XInitDefaultOM(
+ XLCd lcd
+);
+
+extern Bool _XInitDynamicIM(
+ XLCd lcd
+);
+
+extern Bool _XInitDynamicOM(
+ XLCd lcd
);
_XFUNCPROTOEND
+#endif /* !_XP_PRINT_SERVER_ */
+
#endif /* _XLCINT_H_ */
diff --git a/src/xlibi18n/imKStoUCS.c b/src/xlibi18n/imKStoUCS.c
new file mode 100644
index 00000000..693db4a9
--- /dev/null
+++ b/src/xlibi18n/imKStoUCS.c
@@ -0,0 +1,324 @@
+/* $XFree86: xc/lib/X11/imKStoUCS.c,v 1.2 2001/07/25 15:04:45 dawes Exp $ */
+
+#include "Xlibint.h"
+
+static unsigned short const keysym_to_unicode_1a1_1ff[] = {
+ 0x0104, 0x02d8, 0x0141, 0x0000, 0x013d, 0x015a, 0x0000, /* 0x01a0-0x01a7 */
+ 0x0000, 0x0160, 0x015e, 0x0164, 0x0179, 0x0000, 0x017d, 0x017b, /* 0x01a8-0x01af */
+ 0x0000, 0x0105, 0x02db, 0x0142, 0x0000, 0x013e, 0x015b, 0x02c7, /* 0x01b0-0x01b7 */
+ 0x0000, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, /* 0x01b8-0x01bf */
+ 0x0154, 0x0000, 0x0000, 0x0102, 0x0000, 0x0139, 0x0106, 0x0000, /* 0x01c0-0x01c7 */
+ 0x010c, 0x0000, 0x0118, 0x0000, 0x011a, 0x0000, 0x0000, 0x010e, /* 0x01c8-0x01cf */
+ 0x0110, 0x0143, 0x0147, 0x0000, 0x0000, 0x0150, 0x0000, 0x0000, /* 0x01d0-0x01d7 */
+ 0x0158, 0x016e, 0x0000, 0x0170, 0x0000, 0x0000, 0x0162, 0x0000, /* 0x01d8-0x01df */
+ 0x0155, 0x0000, 0x0000, 0x0103, 0x0000, 0x013a, 0x0107, 0x0000, /* 0x01e0-0x01e7 */
+ 0x010d, 0x0000, 0x0119, 0x0000, 0x011b, 0x0000, 0x0000, 0x010f, /* 0x01e8-0x01ef */
+ 0x0111, 0x0144, 0x0148, 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, /* 0x01f0-0x01f7 */
+ 0x0159, 0x016f, 0x0000, 0x0171, 0x0000, 0x0000, 0x0163, 0x02d9 /* 0x01f8-0x01ff */
+};
+
+static unsigned short const keysym_to_unicode_2a1_2fe[] = {
+ 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0124, 0x0000, /* 0x02a0-0x02a7 */
+ 0x0000, 0x0130, 0x0000, 0x011e, 0x0134, 0x0000, 0x0000, 0x0000, /* 0x02a8-0x02af */
+ 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0125, 0x0000, /* 0x02b0-0x02b7 */
+ 0x0000, 0x0131, 0x0000, 0x011f, 0x0135, 0x0000, 0x0000, 0x0000, /* 0x02b8-0x02bf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010a, 0x0108, 0x0000, /* 0x02c0-0x02c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02c8-0x02cf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, /* 0x02d0-0x02d7 */
+ 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x015c, 0x0000, /* 0x02d8-0x02df */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010b, 0x0109, 0x0000, /* 0x02e0-0x02e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x02e8-0x02ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, /* 0x02f0-0x02f7 */
+ 0x011d, 0x0000, 0x0000, 0x0000, 0x0000, 0x016d, 0x015d /* 0x02f8-0x02ff */
+};
+
+static unsigned short const keysym_to_unicode_3a2_3fe[] = {
+ 0x0138, 0x0156, 0x0000, 0x0128, 0x013b, 0x0000, /* 0x03a0-0x03a7 */
+ 0x0000, 0x0000, 0x0112, 0x0122, 0x0166, 0x0000, 0x0000, 0x0000, /* 0x03a8-0x03af */
+ 0x0000, 0x0000, 0x0000, 0x0157, 0x0000, 0x0129, 0x013c, 0x0000, /* 0x03b0-0x03b7 */
+ 0x0000, 0x0000, 0x0113, 0x0123, 0x0167, 0x014a, 0x0000, 0x014b, /* 0x03b8-0x03bf */
+ 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012e, /* 0x03c0-0x03c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x012a, /* 0x03c8-0x03cf */
+ 0x0000, 0x0145, 0x014c, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03d0-0x03d7 */
+ 0x0000, 0x0172, 0x0000, 0x0000, 0x0000, 0x0168, 0x016a, 0x0000, /* 0x03d8-0x03df */
+ 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012f, /* 0x03e0-0x03e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x012b, /* 0x03e8-0x03ef */
+ 0x0000, 0x0146, 0x014d, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x03f0-0x03f7 */
+ 0x0000, 0x0173, 0x0000, 0x0000, 0x0000, 0x0169, 0x016b /* 0x03f8-0x03ff */
+};
+
+static unsigned short const keysym_to_unicode_4a1_4df[] = {
+ 0x3002, 0x3008, 0x3009, 0x3001, 0x30fb, 0x30f2, 0x30a1, /* 0x04a0-0x04a7 */
+ 0x30a3, 0x30a5, 0x30a7, 0x30a9, 0x30e3, 0x30e5, 0x30e7, 0x30c3, /* 0x04a8-0x04af */
+ 0x30fc, 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ab, 0x30ad, /* 0x04b0-0x04b7 */
+ 0x30af, 0x30b1, 0x30b3, 0x30b5, 0x30b7, 0x30b9, 0x30bb, 0x30bd, /* 0x04b8-0x04bf */
+ 0x30bf, 0x30c1, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cb, 0x30cc, /* 0x04c0-0x04c7 */
+ 0x30cd, 0x30ce, 0x30cf, 0x30d2, 0x30d5, 0x30d8, 0x30db, 0x30de, /* 0x04c8-0x04cf */
+ 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30e9, /* 0x04d0-0x04d7 */
+ 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ef, 0x30f3, 0x309b, 0x309c /* 0x04d8-0x04df */
+};
+
+static unsigned short const keysym_to_unicode_590_5fe[] = {
+ 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7, /* 0x0590-0x0597 */
+ 0x06f8, 0x06f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x0598-0x059f */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x066a, 0x0670, 0x0679, /* 0x05a0-0x05a7 */
+
+ 0x067e, 0x0686, 0x0688, 0x0691, 0x060c, 0x0000, 0x06d4, 0x0000, /* 0x05ac-0x05af */
+ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, /* 0x05b0-0x05b7 */
+ 0x0668, 0x0669, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, /* 0x05b8-0x05bf */
+ 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, /* 0x05c0-0x05c7 */
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, /* 0x05c8-0x05cf */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, /* 0x05d0-0x05d7 */
+ 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x05d8-0x05df */
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, /* 0x05e0-0x05e7 */
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, /* 0x05e8-0x05ef */
+ 0x0650, 0x0651, 0x0652, 0x0653, 0x0654, 0x0655, 0x0698, 0x06a4, /* 0x05f0-0x05f7 */
+ 0x06a9, 0x06af, 0x06ba, 0x06be, 0x06cc, 0x06d2, 0x06c1 /* 0x05f8-0x05fe */
+};
+
+static unsigned short keysym_to_unicode_680_6ff[] = {
+ 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2, /* 0x0680-0x0687 */
+ 0x04b6, 0x04b8, 0x04ba, 0x0000, 0x04d8, 0x04e2, 0x04e8, 0x04ee, /* 0x0688-0x068f */
+ 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3, /* 0x0690-0x0697 */
+ 0x04b7, 0x04b9, 0x04bb, 0x0000, 0x04d9, 0x04e3, 0x04e9, 0x04ef, /* 0x0698-0x069f */
+ 0x0000, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, /* 0x06a0-0x06a7 */
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f, /* 0x06a8-0x06af */
+ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, /* 0x06b0-0x06b7 */
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f, /* 0x06b8-0x06bf */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, /* 0x06c0-0x06c7 */
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, /* 0x06c8-0x06cf */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, /* 0x06d0-0x06d7 */
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, /* 0x06d8-0x06df */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, /* 0x06e0-0x06e7 */
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, /* 0x06e8-0x06ef */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, /* 0x06f0-0x06f7 */
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a /* 0x06f8-0x06ff */
+};
+
+static unsigned short const keysym_to_unicode_7a1_7f9[] = {
+ 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, /* 0x07a0-0x07a7 */
+ 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0385, 0x2015, /* 0x07a8-0x07af */
+ 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, /* 0x07b0-0x07b7 */
+ 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07b8-0x07bf */
+ 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, /* 0x07c0-0x07c7 */
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, /* 0x07c8-0x07cf */
+ 0x03a0, 0x03a1, 0x03a3, 0x0000, 0x03a4, 0x03a5, 0x03a6, 0x03a7, /* 0x07d0-0x07d7 */
+ 0x03a8, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x07d8-0x07df */
+ 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, /* 0x07e0-0x07e7 */
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, /* 0x07e8-0x07ef */
+ 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, /* 0x07f0-0x07f7 */
+ 0x03c8, 0x03c9 /* 0x07f8-0x07ff */
+};
+
+static unsigned short const keysym_to_unicode_8a4_8fe[] = {
+ 0x2320, 0x2321, 0x0000, 0x231c, /* 0x08a0-0x08a7 */
+ 0x231d, 0x231e, 0x231f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08a8-0x08af */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08b0-0x08b7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2264, 0x2260, 0x2265, 0x222b, /* 0x08b8-0x08bf */
+ 0x2234, 0x0000, 0x221e, 0x0000, 0x0000, 0x2207, 0x0000, 0x0000, /* 0x08c0-0x08c7 */
+ 0x2245, 0x2246, 0x0000, 0x0000, 0x0000, 0x0000, 0x22a2, 0x0000, /* 0x08c8-0x08cf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221a, 0x0000, /* 0x08d0-0x08d7 */
+ 0x0000, 0x0000, 0x2282, 0x2283, 0x2229, 0x222a, 0x2227, 0x2228, /* 0x08d8-0x08df */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e0-0x08e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x08e8-0x08ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0192, 0x0000, /* 0x08f0-0x08f7 */
+ 0x0000, 0x0000, 0x0000, 0x2190, 0x2191, 0x2192, 0x2193 /* 0x08f8-0x08ff */
+};
+
+static unsigned short const keysym_to_unicode_9df_9f8[] = {
+ 0x2422, /* 0x09d8-0x09df */
+ 0x2666, 0x25a6, 0x2409, 0x240c, 0x240d, 0x240a, 0x0000, 0x0000, /* 0x09e0-0x09e7 */
+ 0x240a, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0x2500, /* 0x09e8-0x09ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x251c, 0x2524, 0x2534, 0x252c, /* 0x09f0-0x09f7 */
+ 0x2502 /* 0x09f8-0x09ff */
+};
+
+static unsigned short const keysym_to_unicode_aa1_afe[] = {
+ 0x2003, 0x2002, 0x2004, 0x2005, 0x2007, 0x2008, 0x2009, /* 0x0aa0-0x0aa7 */
+ 0x200a, 0x2014, 0x2013, 0x0000, 0x0000, 0x0000, 0x2026, 0x2025, /* 0x0aa8-0x0aaf */
+ 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215a, /* 0x0ab0-0x0ab7 */
+ 0x2105, 0x0000, 0x0000, 0x2012, 0x2039, 0x2024, 0x203a, 0x0000, /* 0x0ab8-0x0abf */
+ 0x0000, 0x0000, 0x0000, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000, /* 0x0ac0-0x0ac7 */
+ 0x0000, 0x2122, 0x2120, 0x0000, 0x25c1, 0x25b7, 0x25cb, 0x25ad, /* 0x0ac8-0x0acf */
+ 0x2018, 0x2019, 0x201c, 0x201d, 0x211e, 0x0000, 0x2032, 0x2033, /* 0x0ad0-0x0ad7 */
+ 0x0000, 0x271d, 0x0000, 0x220e, 0x25c2, 0x2023, 0x25cf, 0x25ac, /* 0x0ad8-0x0adf */
+ 0x25e6, 0x25ab, 0x25ae, 0x25b5, 0x25bf, 0x2606, 0x2022, 0x25aa, /* 0x0ae0-0x0ae7 */
+ 0x25b4, 0x25be, 0x261a, 0x261b, 0x2663, 0x2666, 0x2665, 0x0000, /* 0x0ae8-0x0aef */
+ 0x2720, 0x2020, 0x2021, 0x2713, 0x2612, 0x266f, 0x266d, 0x2642, /* 0x0af0-0x0af7 */
+ 0x2640, 0x2121, 0x2315, 0x2117, 0x2038, 0x201a, 0x201e /* 0x0af8-0x0aff */
+};
+
+/* none of the APL keysyms match the Unicode characters */
+
+static unsigned short const keysym_to_unicode_cdf_cfa[] = {
+ 0x2017, /* 0x0cd8-0x0cdf */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, /* 0x0ce0-0x0ce7 */
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, /* 0x0ce8-0x0cef */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, /* 0x0cf0-0x0cf7 */
+ 0x05e8, 0x05e9, 0x05ea /* 0x0cf8-0x0cff */
+};
+
+static unsigned short const keysym_to_unicode_da1_df9[] = {
+ 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, /* 0x0da0-0x0da7 */
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, /* 0x0da8-0x0daf */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, /* 0x0db0-0x0db7 */
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, /* 0x0db8-0x0dbf */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, /* 0x0dc0-0x0dc7 */
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, /* 0x0dc8-0x0dcf */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, /* 0x0dd0-0x0dd7 */
+ 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0e3e, 0x0e3f, /* 0x0dd8-0x0ddf */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, /* 0x0de0-0x0de7 */
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0000, 0x0000, /* 0x0de8-0x0def */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, /* 0x0df0-0x0df7 */
+ 0x0e58, 0x0e59 /* 0x0df8-0x0dff */
+};
+
+static unsigned short const keysym_to_unicode_ea0_eff[] = {
+ 0x0000, 0x1101, 0x1101, 0x11aa, 0x1102, 0x11ac, 0x11ad, 0x1103, /* 0x0ea0-0x0ea7 */
+ 0x1104, 0x1105, 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, /* 0x0ea8-0x0eaf */
+ 0x11b6, 0x1106, 0x1107, 0x1108, 0x11b9, 0x1109, 0x110a, 0x110b, /* 0x0eb0-0x0eb7 */
+ 0x110c, 0x110d, 0x110e, 0x110f, 0x1110, 0x1111, 0x1112, 0x1161, /* 0x0eb8-0x0ebf */
+ 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, /* 0x0ec0-0x0ec7 */
+ 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f, 0x1170, 0x1171, /* 0x0ec8-0x0ecf */
+ 0x1172, 0x1173, 0x1174, 0x1175, 0x11a8, 0x11a9, 0x11aa, 0x11ab, /* 0x0ed0-0x0ed7 */
+ 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2, 0x11b3, /* 0x0ed8-0x0edf */
+ 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba, 0x11bb, /* 0x0ee0-0x0ee7 */
+ 0x11bc, 0x11bd, 0x11be, 0x11bf, 0x11c0, 0x11c1, 0x11c2, 0x0000, /* 0x0ee8-0x0eef */
+ 0x0000, 0x0000, 0x1140, 0x0000, 0x0000, 0x1159, 0x119e, 0x0000, /* 0x0ef0-0x0ef7 */
+ 0x11eb, 0x0000, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9, /* 0x0ef8-0x0eff */
+};
+
+static unsigned short keysym_to_unicode_12a1_12fe[] = {
+ 0x1e02, 0x1e03, 0x0000, 0x0000, 0x0000, 0x1e0a, 0x0000, /* 0x12a0-0x12a7 */
+ 0x1e80, 0x0000, 0x1e82, 0x1e0b, 0x1ef2, 0x0000, 0x0000, 0x0000, /* 0x12a8-0x12af */
+ 0x1e1e, 0x1e1f, 0x0000, 0x0000, 0x1e40, 0x1e41, 0x0000, 0x1e56, /* 0x12b0-0x12b7 */
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, /* 0x12b8-0x12bf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c0-0x12c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12c8-0x12cf */
+ 0x0174, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e6a, /* 0x12d0-0x12d7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0176, 0x0000, /* 0x12d8-0x12df */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12e0-0x12e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x12e8-0x12ef */
+ 0x0175, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e6b, /* 0x12f0-0x12f7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0177 /* 0x12f0-0x12ff */
+};
+
+static unsigned short const keysym_to_unicode_13bc_13be[] = {
+ 0x0152, 0x0153, 0x0178 /* 0x13b8-0x13bf */
+};
+
+static unsigned short keysym_to_unicode_14a1_14ff[] = {
+ 0x2741, 0x00a7, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab, /* 0x14a0-0x14a7 */
+ 0x2014, 0x002e, 0x055d, 0x002c, 0x2013, 0x058a, 0x2026, 0x055c, /* 0x14a8-0x14af */
+ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563, /* 0x14b0-0x14b7 */
+ 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567, /* 0x14b8-0x14bf */
+ 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b, /* 0x14c0-0x14c7 */
+ 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f, /* 0x14c8-0x14cf */
+ 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573, /* 0x14d0-0x14d7 */
+ 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577, /* 0x14d8-0x14df */
+ 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b, /* 0x14e0-0x14e7 */
+ 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f, /* 0x14e8-0x14ef */
+ 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583, /* 0x14f0-0x14f7 */
+ 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x2019, 0x0027, /* 0x14f8-0x14ff */
+};
+
+static unsigned short keysym_to_unicode_15d0_15f6[] = {
+ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, /* 0x15d0-0x15d7 */
+ 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, /* 0x15d8-0x15df */
+ 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, /* 0x15e0-0x15e7 */
+ 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, /* 0x15e8-0x15ef */
+ 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6 /* 0x15f0-0x15f7 */
+};
+
+static unsigned short keysym_to_unicode_16a0_16f6[] = {
+ 0x0000, 0x0000, 0xf0a2, 0x1e8a, 0x0000, 0xf0a5, 0x012c, 0xf0a7, /* 0x16a0-0x16a7 */
+ 0xf0a8, 0x01b5, 0x01e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x019f, /* 0x16a8-0x16af */
+ 0x0000, 0x017e, 0xf0b2, 0x1e8b, 0x01d1, 0xf0b5, 0x012d, 0xf0b7, /* 0x16b0-0x16b7 */
+ 0xf0b8, 0x01b6, 0x01e7, 0x01d2, 0x0000, 0x0000, 0x0000, 0x0275, /* 0x16b8-0x16bf */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x018f, 0x0000, /* 0x16c0-0x16c7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16c8-0x16cf */
+ 0x0000, 0x1e36, 0xf0d2, 0xf0d3, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16d0-0x16d7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16d8-0x16df */
+ 0x0000, 0x1e37, 0xf0e2, 0xf0e3, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16e0-0x16e7 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 0x16e8-0x16ef */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0259 /* 0x16f0-0x16f6 */
+};
+
+static unsigned short const keysym_to_unicode_1e9f_1eff[] = {
+ 0x0303,
+ 0x1ea0, 0x1ea1, 0x1ea2, 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea6, 0x1ea7, /* 0x1ea0-0x1ea7 */
+ 0x1ea8, 0x1ea9, 0x1eaa, 0x1eab, 0x1eac, 0x1ead, 0x1eae, 0x1eaf, /* 0x1ea8-0x1eaf */
+ 0x1eb0, 0x1eb1, 0x1eb2, 0x1eb3, 0x1eb4, 0x1eb5, 0x1eb6, 0x1eb7, /* 0x1eb0-0x1eb7 */
+ 0x1eb8, 0x1eb9, 0x1eba, 0x1ebb, 0x1ebc, 0x1ebd, 0x1ebe, 0x1ebf, /* 0x1eb8-0x1ebf */
+ 0x1ec0, 0x1ec1, 0x1ec2, 0x1ec3, 0x1ec4, 0x1ec5, 0x1ec6, 0x1ec7, /* 0x1ec0-0x1ec7 */
+ 0x1ec8, 0x1ec9, 0x1eca, 0x1ecb, 0x1ecc, 0x1ecd, 0x1ece, 0x1ecf, /* 0x1ec8-0x1ecf */
+ 0x1ed0, 0x1ed1, 0x1ed2, 0x1ed3, 0x1ed4, 0x1ed5, 0x1ed6, 0x1ed7, /* 0x1ed0-0x1ed7 */
+ 0x1ed8, 0x1ed9, 0x1eda, 0x1edb, 0x1edc, 0x1edd, 0x1ede, 0x1edf, /* 0x1ed8-0x1edf */
+ 0x1ee0, 0x1ee1, 0x1ee2, 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee6, 0x1ee7, /* 0x1ee0-0x1ee7 */
+ 0x1ee8, 0x1ee9, 0x1eea, 0x1eeb, 0x1eec, 0x1eed, 0x1eee, 0x1eef, /* 0x1ee8-0x1eef */
+ 0x1ef0, 0x1ef1, 0x0300, 0x0301, 0x1ef4, 0x1ef5, 0x1ef6, 0x1ef7, /* 0x1ef0-0x1ef7 */
+ 0x1ef8, 0x1ef9, 0x01a0, 0x01a1, 0x01af, 0x01b0, 0x0309, 0x0323 /* 0x1ef8-0x1eff */
+};
+
+static unsigned short const keysym_to_unicode_20a0_20ac[] = {
+ 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, /* 0x20a0-0x20a7 */
+ 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac /* 0x20a8-0x20af */
+};
+
+unsigned int
+#if NeedFunctionPrototypes
+KeySymToUcs4(KeySym keysym)
+#else
+KeySymToUcs4(keysym)
+ KeySym keysym;
+#endif
+{
+ /* 'Unicode keysym' */
+ if ((keysym & 0xff000000) == 0x01000000)
+ return (keysym & 0x00ffffff);
+
+ if (keysym > 0 && keysym < 0x100)
+ return keysym;
+ else if (keysym > 0x1a0 && keysym < 0x200)
+ return keysym_to_unicode_1a1_1ff[keysym - 0x1a1];
+ else if (keysym > 0x2a0 && keysym < 0x2ff)
+ return keysym_to_unicode_2a1_2fe[keysym - 0x2a1];
+ else if (keysym > 0x3a1 && keysym < 0x3ff)
+ return keysym_to_unicode_3a2_3fe[keysym - 0x3a2];
+ else if (keysym > 0x4a0 && keysym < 0x4e0)
+ return keysym_to_unicode_4a1_4df[keysym - 0x4a1];
+ else if (keysym > 0x589 && keysym < 0x5ff)
+ return keysym_to_unicode_590_5fe[keysym - 0x590];
+ else if (keysym > 0x67f && keysym < 0x700)
+ return keysym_to_unicode_680_6ff[keysym - 0x680];
+ else if (keysym > 0x7a0 && keysym < 0x7fa)
+ return keysym_to_unicode_7a1_7f9[keysym - 0x7a1];
+ else if (keysym > 0x8a3 && keysym < 0x8ff)
+ return keysym_to_unicode_8a4_8fe[keysym - 0x8a4];
+ else if (keysym > 0x9de && keysym < 0x9f9)
+ return keysym_to_unicode_9df_9f8[keysym - 0x9df];
+ else if (keysym > 0xaa0 && keysym < 0xaff)
+ return keysym_to_unicode_aa1_afe[keysym - 0xaa1];
+ else if (keysym > 0xcde && keysym < 0xcfb)
+ return keysym_to_unicode_cdf_cfa[keysym - 0xcdf];
+ else if (keysym > 0xda0 && keysym < 0xdfa)
+ return keysym_to_unicode_da1_df9[keysym - 0xda1];
+ else if (keysym > 0xe9f && keysym < 0xf00)
+ return keysym_to_unicode_ea0_eff[keysym - 0xea0];
+ else if (keysym > 0x12a0 && keysym < 0x12ff)
+ return keysym_to_unicode_12a1_12fe[keysym - 0x12a1];
+ else if (keysym > 0x13bb && keysym < 0x13bf)
+ return keysym_to_unicode_13bc_13be[keysym - 0x13bc];
+ else if (keysym > 0x14a0 && keysym < 0x1500)
+ return keysym_to_unicode_14a1_14ff[keysym - 0x14a1];
+ else if (keysym > 0x15cf && keysym < 0x15f7)
+ return keysym_to_unicode_15d0_15f6[keysym - 0x15d0];
+ else if (keysym > 0x169f && keysym < 0x16f7)
+ return keysym_to_unicode_16a0_16f6[keysym - 0x16a0];
+ else if (keysym > 0x1e9e && keysym < 0x1f00)
+ return keysym_to_unicode_1e9f_1eff[keysym - 0x1ea0];
+ else if (keysym > 0x209f && keysym < 0x20ad)
+ return keysym_to_unicode_20a0_20ac[keysym - 0x20a0];
+ else
+ return 0;
+}
diff --git a/src/xlibi18n/lcCT.c b/src/xlibi18n/lcCT.c
index 5dd2ddcc..fcaca229 100644
--- a/src/xlibi18n/lcCT.c
+++ b/src/xlibi18n/lcCT.c
@@ -31,70 +31,107 @@
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/*
+ * 2000
+ * Modifier: Ivan Pascal The XFree86 Project
+ * Modifier: Bruno Haible The XFree86 Project
+ */
+/* $XFree86: xc/lib/X11/lcCT.c,v 3.27 2002/10/08 23:31:35 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
#include <X11/Xos.h>
#include <stdio.h>
-typedef struct _StateRec {
- XlcCharSet charset;
- XlcCharSet GL_charset;
- XlcCharSet GR_charset;
- XlcCharSet ext_seg_charset;
- int ext_seg_left;
-} StateRec, *State;
+/* ====================== Built-in Character Sets ====================== */
+
+/*
+ * Static representation of a character set that can be used in Compound Text.
+ */
typedef struct _CTDataRec {
- char *name;
- char *encoding; /* Compound Text encoding */
+ const char *name;
+ const char *ct_sequence; /* Compound Text encoding, ESC sequence */
} CTDataRec, *CTData;
-typedef struct _CTInfoRec {
- XlcCharSet charset;
- int encoding_len;
- char *encoding; /* Compound Text encoding */
- int ext_segment_len;
- char *ext_segment; /* extended segment */
- struct _CTInfoRec *next;
-} CTInfoRec, *CTInfo;
-
static CTDataRec default_ct_data[] =
{
- { "ISO8859-1:GL", "\033(B" },
- { "ISO8859-1:GR", "\033-A" },
- { "ISO8859-2:GR", "\033-B" },
- { "ISO8859-3:GR", "\033-C" },
- { "ISO8859-4:GR", "\033-D" },
- { "ISO8859-7:GR", "\033-F" },
- { "ISO8859-6:GR", "\033-G" },
- { "ISO8859-8:GR", "\033-H" },
- { "ISO8859-5:GR", "\033-L" },
- { "ISO8859-9:GR", "\033-M" },
- { "ISO8859-10:GR", "\033-V" },
- { "JISX0201.1976-0:GL", "\033(J" },
- { "JISX0201.1976-0:GR", "\033)I" },
-
- { "GB2312.1980-0:GL", "\033$(A" },
- { "GB2312.1980-0:GR", "\033$)A" },
- { "JISX0208.1983-0:GL", "\033$(B" },
- { "JISX0208.1983-0:GR", "\033$)B" },
- { "KSC5601.1987-0:GL", "\033$(C" },
- { "KSC5601.1987-0:GR", "\033$)C" },
-#ifdef notdef
- { "JISX0212.1990-0:GL", "\033$(D" },
- { "JISX0212.1990-0:GR", "\033$)D" },
- { "CNS11643.1986-1:GL", "\033$(G" },
- { "CNS11643.1986-1:GR", "\033$)G" },
- { "CNS11643.1986-2:GL", "\033$(H" },
- { "CNS11643.1986-2:GR", "\033$)H" },
+ /* */
+ /* X11 registry name MIME name ISO-IR ESC sequence */
+ /* */
+
+ /* Registered character sets with one byte per character */
+ { "ISO8859-1:GL", /* US-ASCII 6 */ "\033(B" },
+ { "ISO8859-1:GR", /* ISO-8859-1 100 */ "\033-A" },
+ { "ISO8859-2:GR", /* ISO-8859-2 101 */ "\033-B" },
+ { "ISO8859-3:GR", /* ISO-8859-3 109 */ "\033-C" },
+ { "ISO8859-4:GR", /* ISO-8859-4 110 */ "\033-D" },
+ { "ISO8859-5:GR", /* ISO-8859-5 144 */ "\033-L" },
+ { "ISO8859-6:GR", /* ISO-8859-6 127 */ "\033-G" },
+ { "ISO8859-7:GR", /* ISO-8859-7 126 */ "\033-F" },
+ { "ISO8859-8:GR", /* ISO-8859-8 138 */ "\033-H" },
+ { "ISO8859-9:GR", /* ISO-8859-9 148 */ "\033-M" },
+ { "ISO8859-10:GR", /* ISO-8859-10 157 */ "\033-V" },
+ { "ISO8859-11:GR", /* ISO-8859-11 166 */ "\033-T" },
+ { "ISO8859-13:GR", /* ISO-8859-13 179 */ "\033-Y" },
+ { "ISO8859-14:GR", /* ISO-8859-14 199 */ "\033-_" },
+ { "ISO8859-15:GR", /* ISO-8859-15 203 */ "\033-b" },
+ { "ISO8859-16:GR", /* ISO-8859-16 226 */ "\033-f" },
+ { "JISX0201.1976-0:GL", /* ISO-646-JP 14 */ "\033(J" },
+ { "JISX0201.1976-0:GR", "\033)I" },
+#if 0
+ { "TIS620-0:GR", /* TIS-620 166 */ "\033-T" },
#endif
- { "TIS620.2533-1:GR", "\033-T"},
- { "ISO10646-1", "\033%B"},
- /* Non-Standard Character Set Encodings */
- { "KOI8-R:GR", "\033%/1\200\210koi8-r\002"},
- { "FCD8859-15:GR", "\033%/1\200\213fcd8859-15\002"},
-} ;
+
+ /* Registered character sets with two byte per character */
+ { "GB2312.1980-0:GL", /* GB_2312-80 58 */ "\033$(A" },
+ { "GB2312.1980-0:GR", /* GB_2312-80 58 */ "\033$)A" },
+ { "JISX0208.1983-0:GL", /* JIS_X0208-1983 87 */ "\033$(B" },
+ { "JISX0208.1983-0:GR", /* JIS_X0208-1983 87 */ "\033$)B" },
+ { "JISX0208.1990-0:GL", /* JIS_X0208-1990 168 */ "\033$(B" },
+ { "JISX0208.1990-0:GR", /* JIS_X0208-1990 168 */ "\033$)B" },
+ { "JISX0212.1990-0:GL", /* JIS_X0212-1990 159 */ "\033$(D" },
+ { "JISX0212.1990-0:GR", /* JIS_X0212-1990 159 */ "\033$)D" },
+ { "KSC5601.1987-0:GL", /* KS_C_5601-1987 149 */ "\033$(C" },
+ { "KSC5601.1987-0:GR", /* KS_C_5601-1987 149 */ "\033$)C" },
+ { "CNS11643.1986-1:GL", /* CNS 11643-1992 pl.1 171 */ "\033$(G" },
+ { "CNS11643.1986-1:GR", /* CNS 11643-1992 pl.1 171 */ "\033$)G" },
+ { "CNS11643.1986-2:GL", /* CNS 11643-1992 pl.2 172 */ "\033$(H" },
+ { "CNS11643.1986-2:GR", /* CNS 11643-1992 pl.2 172 */ "\033$)H" },
+ { "CNS11643.1992-3:GL", /* CNS 11643-1992 pl.3 183 */ "\033$(I" },
+ { "CNS11643.1992-3:GR", /* CNS 11643-1992 pl.3 183 */ "\033$)I" },
+ { "CNS11643.1992-4:GL", /* CNS 11643-1992 pl.4 184 */ "\033$(J" },
+ { "CNS11643.1992-4:GR", /* CNS 11643-1992 pl.4 184 */ "\033$)J" },
+ { "CNS11643.1992-5:GL", /* CNS 11643-1992 pl.5 185 */ "\033$(K" },
+ { "CNS11643.1992-5:GR", /* CNS 11643-1992 pl.5 185 */ "\033$)K" },
+ { "CNS11643.1992-6:GL", /* CNS 11643-1992 pl.6 186 */ "\033$(L" },
+ { "CNS11643.1992-6:GR", /* CNS 11643-1992 pl.6 186 */ "\033$)L" },
+ { "CNS11643.1992-7:GL", /* CNS 11643-1992 pl.7 187 */ "\033$(M" },
+ { "CNS11643.1992-7:GR", /* CNS 11643-1992 pl.7 187 */ "\033$)M" },
+
+ /* Registered encodings with a varying number of bytes per character */
+ { "ISO10646-1", /* UTF-8 196 */ "\033%G" },
+
+ /* Encodings without ISO-IR assigned escape sequence must be
+ defined in XLC_LOCALE files, using "\033%/1" or "\033%/2". */
+
+ /* Backward compatibility with XFree86 3.x */
+ { "ISO8859-14:GR", "\033%/1" },
+ { "ISO8859-15:GR", "\033%/1" },
+ /* For use by utf8 -> ctext */
+ { "BIG5-0:GLGR", "\033%/2"},
+ /* used by Emacs, but not backed by ISO-IR */
+ { "BIG5-E0:GL", "\033$(0" },
+ { "BIG5-E0:GR", "\033$)0" },
+ { "BIG5-E1:GL", "\033$(1" },
+ { "BIG5-E1:GR", "\033$)1" },
+
+};
+
+/* We represent UTF-8 as an XlcGLGR charset, not in extended segments. */
+#define UTF8_IN_EXTSEQ 0
+
+/* ======================= Parsing ESC Sequences ======================= */
#define XctC0 0x0000
#define XctHT 0x0009
@@ -104,6 +141,7 @@ static CTDataRec default_ct_data[] =
#define XctC1 0x0080
#define XctCSI 0x009b
#define XctGR 0x00a0
+#define XctSTX 0x0002
#define XctCntrlFunc 0x0023
#define XctMB 0x0024
@@ -122,268 +160,282 @@ static CTDataRec default_ct_data[] =
#define XctGL94MB 0x2428
#define XctGR94MB 0x2429
#define XctExtSeg 0x252f
-#define XctOtherSeg 0x2f00
-
-#define XctESCSeq 0x1b00
-#define XctCSISeq 0x9b00
-
-#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
-#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
-
-typedef struct {
- XlcSide side;
- int char_size;
- int set_size;
- int ext_seg_length;
- int version;
- CTInfo ct_info;
-} CTParseRec, *CTParse;
-
-CTDataRec *default_ct_data_list()
-{
- return(default_ct_data);
-}
-
-size_t default_ct_data_list_num()
-{
- size_t num = sizeof(default_ct_data) / sizeof(CTDataRec);
- return(num);
-}
-
-static CTInfo ct_list = NULL;
-
-static CTInfo
-_XlcGetCTInfoFromEncoding(encoding, length)
- register char *encoding;
- register int length;
-{
- register CTInfo ct_info;
-
- for (ct_info = ct_list; ct_info; ct_info = ct_info->next) {
- if (length >= ct_info->encoding_len) {
- if (ct_info->ext_segment) {
- if (!strncmp(ct_info->encoding, encoding, 4) &&
- !strncmp(ct_info->ext_segment, encoding + 6,
- ct_info->ext_segment_len))
- return ct_info;
- } else if (!strncmp(ct_info->encoding, encoding,
- ct_info->encoding_len)) {
- return ct_info;
- }
- }
- }
-
- return (CTInfo) NULL;
-}
+#define XctReturn 0x2540
+/*
+ * Parses the header of a Compound Text segment, i.e. the charset designator.
+ * The string starts at *text and has *length bytes.
+ * Return value is one of:
+ * 0 (no valid charset designator),
+ * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
+ * XctLeftToRight, XctRightToLeft, XctDirectionEnd,
+ * XctExtSeg, XctOtherCoding, XctReturn, XctIgnoreExt, XctNotIgnoreExt.
+ * If the return value is not 0, *text is incremented and *length decremented,
+ * to point past the charset designator. If the return value is one of
+ * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
+ * XctExtSeg, XctOtherCoding, XctIgnoreExt, XctNotIgnoreExt,
+ * *final_byte is set to the "final byte" of the charset designator.
+ */
static unsigned int
-_XlcParseCT(parse, text, length)
- register CTParse parse;
- char **text;
- int *length;
+_XlcParseCT(
+ const char **text,
+ int *length,
+ unsigned char *final_byte)
{
unsigned int ret = 0;
unsigned char ch;
- register unsigned char *str = (unsigned char *) *text;
+ const unsigned char *str = (const unsigned char *) *text;
- bzero((char *) parse, sizeof(CTParseRec));
+ *final_byte = 0;
+ if (*length < 1)
+ return 0;
switch (ch = *str++) {
- case XctESC:
- if (*str == XctOtherCoding && *(str + 1) == XctNonStandard
- && *(str + 2) >= 0x30 && *(str + 2) <= 0x3f && *length >= 6) {
-
- /* non-standard encodings */
- parse->side = XlcGLGR;
- parse->set_size = 0;
- str += 2;
- if (*str <= 0x34) {
- parse->char_size = *str - 0x30;
- if (parse->char_size == 0) parse->char_size = 1;
- ret = XctExtSeg;
- parse->ct_info = _XlcGetCTInfoFromEncoding(*text, *length);
- } else
- ret = XctOtherSeg;
- str++;
- parse->ext_seg_length = (*str - 128) * 128 + *(str + 1) - 128;
- str += 2;
-
- goto done;
- } else if (*str == XctCntrlFunc && *length >= 4 &&
- *(str + 1) >= 0x20 && *(str + 1) <= 0x2f &&
- (*(str + 2) == XctIgnoreExt ||
- *(str + 2) == XctNotIgnoreExt)) {
-
- /* ignore extension or not */
- str++;
- parse->version = *str++ - 0x20;
- ret = *str++;
-
- goto done;
- }
-
- if (*str == XctMB) { /* multiple-byte sets */
- parse->char_size = 2;
- str++;
- } else
- parse->char_size = 1;
-
- switch (*str) {
- case XctGL94:
- parse->side = XlcGL;
- parse->set_size = 94;
- ret = (parse->char_size == 1) ? XctGL94 : XctGL94MB;
- break;
- case XctGR94:
- parse->side = XlcGR;
- parse->set_size = 94;
- ret = (parse->char_size == 1) ? XctGR94 : XctGR94MB;
- break;
- case XctGR96:
- if (parse->char_size == 1) {
- parse->side = XlcGR;
- parse->set_size = 96;
- ret = XctGR96;
- }
- break;
- }
- if (ret) {
- str++;
- if (*str >= 0x24 && *str <= 0x2f) { /* non-standard */
- ret = 0;
- str++;
- }
- }
-
- SKIP_I(str)
-
- if (ret && *str < 0x40) /* non-standard */
- ret = 0;
-
- if (*str < 0x30 || *str > 0x7e || (char *) str - *text >= *length)
- break;
-
- if (ret == 0)
- ret = XctESCSeq;
- else {
- if (parse->char_size == 2) {
- if (*str >= 0x70)
- parse->char_size = 4;
- else if (*str >= 0x60)
- parse->char_size = 3;
- }
- parse->ct_info = _XlcGetCTInfoFromEncoding(*text, *length);
- }
- str++;
- goto done;
- case XctCSI:
+ case XctESC:
+ if (*length < 2)
+ return 0;
+ switch (ch = *str++) {
+ case XctOtherCoding: /* % */
+ if (*length < 3)
+ return 0;
+ ch = *str++;
+ if (ch == XctNonStandard) { /* / */
+ if (*length < 4)
+ return 0;
+ ret = XctExtSeg;
+ ch = *str++;
+ } else if (ch == '@') {
+ ret = XctReturn;
+ } else {
+ ret = XctOtherCoding;
+ }
+ *final_byte = ch;
+ break;
+
+ case XctCntrlFunc: /* # */
+ if (*length < 4)
+ return 0;
+ *final_byte = *str++;
+ switch (*str++) {
+ case XctIgnoreExt: /* 0 */
+ ret = XctIgnoreExt;
+ break;
+ case XctNotIgnoreExt: /* 1 */
+ ret = XctNotIgnoreExt;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+ break;
+
+ case XctMB: /* $ */
+ if (*length < 4)
+ return 0;
+ ch = *str++;
+ switch (ch) {
+ case XctGL94: /* ( */
+ ret = XctGL94MB;
+ break;
+ case XctGR94: /* ) */
+ ret = XctGR94MB;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+ *final_byte = *str++;
+ break;
+
+ case XctGL94: /* ( */
+ if (*length < 3)
+ return 0;
+ ret = XctGL94;
+ *final_byte = *str++;
+ break;
+ case XctGR94: /* ) */
+ if (*length < 3)
+ return 0;
+ ret = XctGR94;
+ *final_byte = *str++;
+ break;
+ case XctGR96: /* - */
+ if (*length < 3)
+ return 0;
+ ret = XctGR96;
+ *final_byte = *str++;
+ break;
+ }
+ break;
+ case XctCSI:
/* direction */
- if (*str == XctLeftToRight && *(str + 1) == XctDirection) {
- ret = XctLeftToRight;
- str += 2;
- goto done;
- } else if (*str == XctRightToLeft && *(str + 1) == XctDirection) {
- ret = XctRightToLeft;
- str += 2;
- goto done;
- } else if (*str == XctDirectionEnd) {
- ret = XctDirectionEnd;
- str++;
- goto done;
- }
+ if (*length < 2)
+ return 0;
+ switch (*str++) {
+ case XctLeftToRight:
+ if (*length < 3)
+ return 0;
+ if (*str++ == XctDirection)
+ ret = XctLeftToRight;
+ break;
+ case XctRightToLeft:
+ if (*length < 3)
+ return 0;
+ if (*str++ == XctDirection)
+ ret = XctRightToLeft;
+ break;
+ case XctDirectionEnd:
+ ret = XctDirectionEnd;
+ break;
+ }
+ break;
+ }
- SKIP_P(str)
- SKIP_I(str)
+ if (ret) {
+ *length -= (const char *) str - *text;
+ *text = (const char *) str;
+ }
+ return ret;
+}
- if (*str < 0x40 && *str > 0x7e)
- break;
+/*
+ * Fills into a freshly created XlcCharSet the fields that can be inferred
+ * from the ESC sequence. These are side, char_size, set_size.
+ * Returns True if the charset can be used with Compound Text.
+ *
+ * Used by _XlcCreateDefaultCharSet.
+ */
+Bool
+_XlcParseCharSet(
+ XlcCharSet charset)
+{
+ unsigned int type;
+ unsigned char final_byte;
+ const char *ptr = charset->ct_sequence;
+ int length;
+ int char_size;
+
+ if (*ptr == '\0')
+ return False;
- ret = XctCSISeq;
- str++;
- goto done;
- }
+ length = strlen(ptr);
- if (ch & 0x80) {
- if (ch < 0xa0)
- ret = XctC1;
- else
- ret = XctGR;
- } else {
- if (ch == XctHT || ch == XctNL)
- ret = ch;
- else if (ch < 0x20)
- ret = XctC0;
- else
- ret = XctGL;
+ type = _XlcParseCT(&ptr, &length, &final_byte);
+
+ /* Check for validity and determine char_size.
+ char_size = 0 means varying number of bytes per character. */
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ char_size = 1;
+ break;
+ case XctGL94MB:
+ case XctGR94MB:
+ char_size = (final_byte < 0x60 ? 2 : final_byte < 0x70 ? 3 : 4);
+ break;
+ case XctExtSeg:
+ char_size = final_byte - '0';
+ if (!(char_size >= 0 && char_size <= 4))
+ return False;
+ break;
+ case XctOtherCoding:
+ char_size = 0;
+ break;
+ default:
+ return False;
}
- return ret;
+ charset->char_size = char_size;
+
+ /* Fill in other values. */
+ switch (type) {
+ case XctGL94:
+ case XctGL94MB:
+ charset->side = XlcGL;
+ charset->set_size = 94;
+ break;
+ case XctGR94:
+ case XctGR94MB:
+ charset->side = XlcGR;
+ charset->set_size = 94;
+ break;
+ case XctGR96:
+ charset->side = XlcGR;
+ charset->set_size = 96;
+ break;
+ case XctExtSeg:
+ case XctOtherCoding:
+ charset->side = XlcGLGR;
+ charset->set_size = 0;
+ break;
+ }
+ return True;
+}
-done:
- *length -= (char *) str - *text;
- *text = (char *) str;
- return ret;
-}
+/* =============== Management of the List of Character Sets =============== */
-XlcCharSet
-_XlcAddCT(name, encoding)
- char *name;
- char *encoding;
-{
- CTInfo ct_info;
+/*
+ * Representation of a character set that can be used for Compound Text,
+ * at run time.
+ * Note: This information is not contained in the XlcCharSet, because
+ * multiple ESC sequences may be used for the same XlcCharSet.
+ */
+typedef struct _CTInfoRec {
XlcCharSet charset;
- CTParseRec parse;
- char *ct_ptr = encoding;
- int length;
+ const char *ct_sequence; /* Compound Text ESC sequence */
unsigned int type;
+ unsigned char final_byte;
+ /* If type == XctExtSeg: */
+ const char *ext_segment; /* extended segment name, then '\002' */
+ int ext_segment_len; /* length of above, including final '\002' */
- length = strlen(encoding);
+ struct _CTInfoRec *next;
+} CTInfoRec, *CTInfo;
- switch (type = _XlcParseCT(&parse, &ct_ptr, &length)) {
- case XctExtSeg:
- case XctGL94:
- case XctGL94MB:
- case XctGR94:
- case XctGR94MB:
- case XctGR96:
- if (parse.ct_info) /* existed */
- return parse.ct_info->charset;
- break;
- default:
- return (XlcCharSet) NULL;
- }
+/*
+ * List of character sets that can be used for Compound Text,
+ * Includes all that are listed in default_ct_data, but more can be added
+ * at runtime through _XlcAddCT.
+ */
+static CTInfo ct_list = NULL;
+static CTInfo *ct_list_end = &ct_list;
- charset = _XlcCreateDefaultCharSet(name, encoding);
- if (charset == NULL)
- return (XlcCharSet) NULL;
- _XlcAddCharSet(charset);
+/*
+ * Returns a Compound Text info record for an ESC sequence.
+ * The first part of the ESC sequence has already been parsed into 'type'
+ * and 'final_byte'. The remainder starts at 'text', at least 'text_len'
+ * bytes (only used if type == XctExtSeg).
+ */
+static CTInfo
+_XlcGetCTInfo(
+ unsigned int type,
+ unsigned char final_byte,
+ const char *text,
+ int text_len)
+{
+ CTInfo ct_info;
- ct_info = (CTInfo) Xmalloc(sizeof(CTInfoRec));
- if (ct_info == NULL)
- return (XlcCharSet) NULL;
-
- ct_info->charset = charset;
- ct_info->encoding = charset->ct_sequence;
- ct_info->encoding_len = strlen(ct_info->encoding);
- if (type == XctExtSeg) {
- ct_info->ext_segment = ct_info->encoding + 6;
- ct_info->ext_segment_len = strlen(ct_info->ext_segment);
- } else {
- ct_info->ext_segment = NULL;
- ct_info->ext_segment_len = 0;
- }
- ct_info->next = ct_list;
- ct_list = ct_info;
+ for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
+ if (ct_info->type == type
+ && ct_info->final_byte == final_byte
+ && (type != XctExtSeg
+ || (text_len >= ct_info->ext_segment_len
+ && memcmp(text, ct_info->ext_segment,
+ ct_info->ext_segment_len) == 0)))
+ return ct_info;
- return charset;
+ return (CTInfo) NULL;
}
+/* Returns the Compound Text info for a given XlcCharSet.
+ Returns NULL if none is found. */
static CTInfo
-_XlcGetCTInfoFromCharSet(charset)
- register XlcCharSet charset;
+_XlcGetCTInfoFromCharSet(
+ XlcCharSet charset)
{
- register CTInfo ct_info;
+ CTInfo ct_info;
for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
if (ct_info->charset == charset)
@@ -392,244 +444,445 @@ _XlcGetCTInfoFromCharSet(charset)
return (CTInfo) NULL;
}
-Bool
-_XlcParseCharSet(charset)
- XlcCharSet charset;
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes), and makes it
+ eligible for Compound Text processing. */
+XlcCharSet
+_XlcAddCT(
+ const char *name,
+ const char *ct_sequence)
{
- CTParseRec parse;
- char *ptr, *bufp, buf[BUFSIZ];
+ CTInfo ct_info, existing_info;
+ XlcCharSet charset;
+ const char *ct_ptr;
int length;
+ unsigned int type;
+ unsigned char final_byte;
- if (charset->ct_sequence == NULL)
- return False;
-
- ptr = charset->ct_sequence;
- length = strlen(ptr);
-
- (void) _XlcParseCT(&parse, &ptr, &length);
-
- if (charset->name) {
- charset->xrm_name = XrmStringToQuark(charset->name);
-
- if ((length = strlen (charset->name)) < sizeof buf) bufp = buf;
- else bufp = Xmalloc (length + 1);
-
- if (bufp == NULL) return False;
- strcpy(bufp, charset->name);
- if ((ptr = strchr(bufp, ':')))
- *ptr = '\0';
- charset->xrm_encoding_name = XrmStringToQuark(bufp);
- if (bufp != buf) Xfree (bufp);
- charset->encoding_name = XrmQuarkToString(charset->xrm_encoding_name);
+ charset = _XlcGetCharSet(name);
+ if (charset != NULL) {
+ /* Even if the charset already exists, it is OK to register a second
+ Compound Text sequence for it. */
} else {
- charset->xrm_name = 0;
- charset->encoding_name = NULL;
- charset->xrm_encoding_name = 0;
+ /* Attempt to create the charset. */
+ charset = _XlcCreateDefaultCharSet(name, ct_sequence);
+ if (charset == NULL)
+ return (XlcCharSet) NULL;
+ _XlcAddCharSet(charset);
}
- charset->side = parse.side;
- charset->char_size = parse.char_size;
- charset->set_size = parse.set_size;
+ /* Allocate a CTinfo record. */
+ length = strlen(ct_sequence);
+ ct_info = (CTInfo) Xmalloc(sizeof(CTInfoRec) + length+1);
+ if (ct_info == NULL)
+ return charset;
- return True;
-}
+ ct_info->charset = charset;
+ ct_info->ct_sequence = strcpy((char *) (ct_info + 1), ct_sequence);
-static void init_converter();
+ /* Parse the Compound Text sequence. */
+ ct_ptr = ct_sequence;
+ type = _XlcParseCT(&ct_ptr, &length, &final_byte);
-Bool
-_XlcInitCTInfo()
-{
- register XlcCharSet charset;
- register CTData ct_data;
- register int num;
+ ct_info->type = type;
+ ct_info->final_byte = final_byte;
- if (ct_list == NULL) {
- num = sizeof(default_ct_data) / sizeof(CTDataRec);
- for (ct_data = default_ct_data; num-- > 0; ct_data++) {
- charset = _XlcAddCT(ct_data->name, ct_data->encoding);
- if (charset == NULL)
- continue;
- }
- init_converter();
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ case XctGL94MB:
+ case XctGR94MB:
+ case XctOtherCoding:
+ ct_info->ext_segment = NULL;
+ ct_info->ext_segment_len = 0;
+ break;
+ case XctExtSeg: {
+ /* By convention, the extended segment name is the encoding_name
+ in lowercase. */
+ const char *q = charset->encoding_name;
+ int n = strlen(q);
+ char *p;
+
+ /* Ensure ct_info->ext_segment_len <= 0x3fff - 6. */
+ if (n > 0x3fff - 6 - 1) {
+ Xfree(ct_info);
+ return charset;
+ }
+ p = (char *) Xmalloc(n+1);
+ if (p == NULL) {
+ Xfree(ct_info);
+ return charset;
+ }
+ ct_info->ext_segment = p;
+ ct_info->ext_segment_len = n+1;
+ for ( ; n > 0; p++, q++, n--)
+ *p = (*q >= 'A' && *q <= 'Z' ? *q - 'A' + 'a' : *q);
+ *p = XctSTX;
+ break;
+ }
+ default:
+ Xfree(ct_info);
+ return (XlcCharSet) NULL;
}
- return True;
+ /* Insert it into the list, if not already present. */
+ existing_info =
+ _XlcGetCTInfo(type, ct_info->final_byte,
+ ct_info->ext_segment, ct_info->ext_segment_len);
+ if (existing_info == NULL) {
+ /* Insert it at the end. If there are duplicates CTinfo entries
+ for the same XlcCharSet, we want the first (standard) one to
+ override the second (user defined) one. */
+ ct_info->next = *ct_list_end;
+ *ct_list_end = ct_info;
+ } else {
+ if (existing_info->charset != charset
+ /* We have a conflict, with one exception: JISX0208.1983-0 and
+ JISX0208.1990-0 are the same for all practical purposes. */
+ && !(strncmp(existing_info->charset->name, "JISX0208", 8) == 0
+ && strncmp(charset->name, "JISX0208", 8) == 0)) {
+ fprintf(stderr,
+ "Xlib: charsets %s and %s have the same CT sequence\n",
+ charset->name, existing_info->charset->name);
+ if (strcmp(charset->ct_sequence, ct_sequence) == 0)
+ charset->ct_sequence = "";
+ }
+ Xfree(ct_info);
+ }
+
+ return charset;
}
-static int
-_XlcCheckCTSequence(state, ctext, ctext_len)
- State state;
- char **ctext;
- int *ctext_len;
+/* ========== Converters String <--> CharSet <--> Compound Text ========== */
+
+/*
+ * Structure representing the parse state of a Compound Text string.
+ */
+typedef struct _StateRec {
+ XlcCharSet charset; /* The charset of the current segment */
+ XlcCharSet GL_charset; /* The charset responsible for 0x00..0x7F */
+ XlcCharSet GR_charset; /* The charset responsible for 0x80..0xFF */
+ XlcCharSet Other_charset; /* != NULL if currently in an other segment */
+ int ext_seg_left; /* > 0 if currently in an extended segment */
+} StateRec, *State;
+
+
+/* Subroutine for parsing an ESC sequence. */
+
+typedef enum {
+ resOK, /* Charset saved in 'state', sequence skipped */
+ resNotInList, /* Charset not found, sequence skipped */
+ resNotCTSeq /* EscSeq not recognized, pointers not changed */
+} CheckResult;
+
+static CheckResult
+_XlcCheckCTSequence(
+ State state,
+ const char **ctext,
+ int *ctext_len)
{
XlcCharSet charset;
- CTParseRec parse;
CTInfo ct_info;
- int length;
+ const char *tmp_ctext = *ctext;
+ int tmp_ctext_len = *ctext_len;
+ unsigned int type;
+ unsigned char final_byte;
+ int ext_seg_left = 0;
- _XlcParseCT(&parse, ctext, ctext_len);
-
- ct_info = parse.ct_info;
- if (parse.ext_seg_length > 0) { /* XctExtSeg or XctOtherSeg */
- if (ct_info) {
- length = ct_info->ext_segment_len;
- *ctext += length;
- *ctext_len -= length;
- state->ext_seg_left = parse.ext_seg_length - length;
- state->ext_seg_charset = ct_info->charset;
- } else {
- state->ext_seg_left = parse.ext_seg_length;
- state->ext_seg_charset = NULL;
- }
- } else if (ct_info) {
- if ((charset = ct_info->charset)) {
- if (charset->side == XlcGL)
- state->GL_charset = charset;
- else if (charset->side == XlcGR)
- state->GR_charset = charset;
- }
+ /* Check for validity. */
+ type = _XlcParseCT(&tmp_ctext, &tmp_ctext_len, &final_byte);
+
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ case XctGL94MB:
+ case XctGR94MB:
+ case XctOtherCoding:
+ *ctext = tmp_ctext;
+ *ctext_len = tmp_ctext_len;
+ break;
+ case XctReturn:
+ *ctext = tmp_ctext;
+ *ctext_len = tmp_ctext_len;
+ state->Other_charset = NULL;
+ return resOK;
+ case XctExtSeg:
+ if (tmp_ctext_len > 2
+ && (tmp_ctext[0] & 0x80) && (tmp_ctext[0] & 0x80)) {
+ unsigned int msb = tmp_ctext[0] & 0x7f;
+ unsigned int lsb = tmp_ctext[1] & 0x7f;
+ ext_seg_left = (msb << 7) + lsb;
+ if (ext_seg_left <= tmp_ctext_len - 2) {
+ *ctext = tmp_ctext + 2;
+ *ctext_len = tmp_ctext_len - 2;
+ break;
+ }
+ }
+ return resNotCTSeq;
+ default:
+ return resNotCTSeq;
}
- return 0;
+ ct_info = _XlcGetCTInfo(type, final_byte, *ctext, ext_seg_left);
+
+ if (ct_info) {
+ charset = ct_info->charset;
+ state->ext_seg_left = ext_seg_left;
+ if (type == XctExtSeg) {
+ state->charset = charset;
+ /* Skip past the extended segment name and the separator. */
+ *ctext += ct_info->ext_segment_len;
+ *ctext_len -= ct_info->ext_segment_len;
+ state->ext_seg_left -= ct_info->ext_segment_len;
+ } else if (type == XctOtherCoding) {
+ state->Other_charset = charset;
+ } else {
+ if (charset->side == XlcGL) {
+ state->GL_charset = charset;
+ } else if (charset->side == XlcGR) {
+ state->GR_charset = charset;
+ } else {
+ state->GL_charset = charset;
+ state->GR_charset = charset;
+ }
+ }
+ return resOK;
+ } else {
+ state->ext_seg_left = 0;
+ if (type == XctExtSeg) {
+ /* Skip the entire extended segment. */
+ *ctext += ext_seg_left;
+ *ctext_len -= ext_seg_left;
+ }
+ return resNotInList;
+ }
}
-
static void
-init_state(conv)
- XlcConv conv;
+init_state(
+ XlcConv conv)
{
State state = (State) conv->state;
- static XlcCharSet GL_charset = NULL;
- static XlcCharSet GR_charset = NULL;
+ static XlcCharSet default_GL_charset = NULL;
+ static XlcCharSet default_GR_charset = NULL;
- if (GL_charset == NULL) {
- GL_charset = _XlcGetCharSet("ISO8859-1:GL");
- GR_charset = _XlcGetCharSet("ISO8859-1:GR");
+ if (default_GL_charset == NULL) {
+ default_GL_charset = _XlcGetCharSet("ISO8859-1:GL");
+ default_GR_charset = _XlcGetCharSet("ISO8859-1:GR");
}
- state->GL_charset = state->charset = GL_charset;
- state->GR_charset = GR_charset;
- state->ext_seg_charset = NULL;
+ /* The initial state is ISO-8859-1 on both sides. */
+ state->GL_charset = state->charset = default_GL_charset;
+ state->GR_charset = default_GR_charset;
+
+ state->Other_charset = NULL;
+
state->ext_seg_left = 0;
}
+/* from XlcNCompoundText to XlcNCharSet */
+
static int
-cttocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cttocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
- register State state = (State) conv->state;
- register unsigned char ch;
- int length;
+ State state = (State) conv->state;
XlcCharSet charset = NULL;
- char *ctptr, *bufptr;
+ const char *ctptr;
+ char *bufptr;
int ctext_len, buf_len;
+ int unconv_num = 0;
- ctptr = *((char **) from);
- bufptr = *((char **) to);
+ ctptr = (const char *) *from;
+ bufptr = (char *) *to;
ctext_len = *from_left;
buf_len = *to_left;
while (ctext_len > 0 && buf_len > 0) {
- if (state->ext_seg_left > 0) {
- length = min(state->ext_seg_left, ctext_len);
- length = min(length, buf_len);
-
- ctext_len -= length;
- state->ext_seg_left -= length;
-
- if (state->ext_seg_charset) {
- charset = state->ext_seg_charset;
- buf_len -= length;
- if (charset->side == XlcGL) {
- while (length-- > 0)
- *bufptr++ = *ctptr++ & 0x7f;
- } else if (charset->side == XlcGR) {
- while (length-- > 0)
- *bufptr++ = *ctptr++ | 0x80;
- } else {
- while (length-- > 0)
- *bufptr++ = *ctptr++;
- }
-
- if (state->ext_seg_left < 1)
- state->ext_seg_charset = NULL;
- }
- break;
- }
- ch = *((unsigned char *) ctptr);
- if (ch == 0x1b || ch == 0x9b) {
- length = _XlcCheckCTSequence(state, &ctptr, &ctext_len);
- if (length < 0)
- return -1;
- if (state->ext_seg_left > 0 && charset)
- break;
- } else {
- if (charset) {
- if (charset != (ch & 0x80 ? state->GR_charset :
- state->GL_charset))
- break;
- } else
- charset = ch & 0x80 ? state->GR_charset : state->GL_charset;
-
- if ((ch < 0x20 && ch != '\0' && ch != '\n' && ch != '\t') ||
- (ch >= 0x80 && ch < 0xa0))
- return -1;
-
- *bufptr++ = *ctptr++;
- ctext_len--;
- buf_len--;
- }
+ if (state->ext_seg_left == 0) {
+ /* Not in the middle of an extended segment; look at next byte. */
+ unsigned char ch = *ctptr;
+ XlcCharSet ch_charset;
+
+ if (ch == XctESC) {
+ CheckResult ret =
+ _XlcCheckCTSequence(state, &ctptr, &ctext_len);
+ if (ret == resOK)
+ /* state has been modified. */
+ continue;
+ if (ret == resNotInList) {
+ /* XXX Just continue with previous charset. */
+ unconv_num++;
+ continue;
+ }
+ } else if (ch == XctCSI) {
+ /* XXX Simply ignore the XctLeftToRight, XctRightToLeft,
+ XctDirectionEnd sequences for the moment. */
+ unsigned char dummy;
+ if (_XlcParseCT(&ctptr, &ctext_len, &dummy)) {
+ unconv_num++;
+ continue;
+ }
+ }
+
+ /* Find the charset which is responsible for this byte. */
+ ch_charset = (state->Other_charset != NULL ? state->Other_charset :
+ (ch & 0x80 ? state->GR_charset : state->GL_charset));
+
+ /* Set the charset of this run, or continue the current run,
+ or stop the current run. */
+ if (charset) {
+ if (charset != ch_charset)
+ break;
+ } else {
+ state->charset = charset = ch_charset;
+ }
+
+ /* We don't want to split a character into multiple pieces. */
+ if (buf_len < 6) {
+ if (charset->char_size > 0) {
+ if (buf_len < charset->char_size)
+ break;
+ } else {
+ /* char_size == 0 is tricky. The code here is good only
+ for valid UTF-8 input. */
+ if (charset->ct_sequence[0] == XctESC
+ && charset->ct_sequence[1] == XctOtherCoding
+ && charset->ct_sequence[2] == 'G') {
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ if (buf_len < char_size)
+ break;
+ }
+ }
+ }
+
+ *bufptr++ = *ctptr++;
+ ctext_len--;
+ buf_len--;
+ } else {
+ /* Copy as much as possible from the current extended segment
+ to the buffer. */
+ int char_size;
+
+ /* Set the charset of this run, or continue the current run,
+ or stop the current run. */
+ if (charset) {
+ if (charset != state->charset)
+ break;
+ } else {
+ charset = state->charset;
+ }
+
+ char_size = charset->char_size;
+
+ if (state->ext_seg_left <= buf_len || char_size > 0) {
+ int n = (state->ext_seg_left <= buf_len
+ ? state->ext_seg_left
+ : (buf_len / char_size) * char_size);
+ memcpy(bufptr, ctptr, n);
+ ctptr += n; ctext_len -= n;
+ bufptr += n; buf_len -= n;
+ state->ext_seg_left -= n;
+ } else {
+#if UTF8_IN_EXTSEQ
+ /* char_size == 0 is tricky. The code here is good only
+ for valid UTF-8 input. */
+ if (strcmp(charset->name, "ISO10646-1") == 0) {
+ unsigned char ch = *ctptr;
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ int i;
+ if (buf_len < char_size)
+ break;
+ /* A small loop is faster than calling memcpy. */
+ for (i = char_size; i > 0; i--)
+ *bufptr++ = *ctptr++;
+ ctext_len -= char_size;
+ buf_len -= char_size;
+ state->ext_seg_left -= char_size;
+ } else
+#endif
+ {
+ /* Here ctext_len >= state->ext_seg_left > buf_len.
+ We may be splitting a character into multiple pieces.
+ Oh well. */
+ int n = buf_len;
+ memcpy(bufptr, ctptr, n);
+ ctptr += n; ctext_len -= n;
+ bufptr += n; buf_len -= n;
+ state->ext_seg_left -= n;
+ }
+ }
+ }
}
- if (charset)
- state->charset = charset;
+ /* 'charset' is the charset for the current run. In some cases,
+ 'state->charset' contains the charset for the next run. Therefore,
+ return 'charset'.
+ 'charset' may still be NULL only if no output was produced. */
if (num_args > 0)
- *((XlcCharSet *) args[0]) = state->charset;
+ *((XlcCharSet *) args[0]) = charset;
- *from_left -= ctptr - *((char **) from);
+ *from_left -= ctptr - *((const char **) from);
*from = (XPointer) ctptr;
*to_left -= bufptr - *((char **) to);
*to = (XPointer) bufptr;
- return 0;
+ return unconv_num;
}
+/* from XlcNCharSet to XlcNCompoundText */
+
static int
-cstoct(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstoct(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
XlcSide side;
- unsigned char min_ch, max_ch;
- register unsigned char ch;
- int length;
+ unsigned char min_ch = 0, max_ch = 0;
+ int length, unconv_num;
CTInfo ct_info;
XlcCharSet charset;
- char *csptr, *ctptr;
+ const char *csptr;
+ char *ctptr;
int csstr_len, ct_len;
+ char *ext_segment_start;
+ int char_size;
+ /* One argument is required, of type XlcCharSet. */
if (num_args < 1)
return -1;
-
- csptr = *((char **) from);
+
+ csptr = *((const char **) from);
ctptr = *((char **) to);
csstr_len = *from_left;
ct_len = *to_left;
-
+
charset = (XlcCharSet) args[0];
ct_info = _XlcGetCTInfoFromCharSet(charset);
@@ -637,74 +890,170 @@ cstoct(conv, from, from_left, to, to_left, args, num_args)
return -1;
side = charset->side;
+ length = strlen(ct_info->ct_sequence);
+
+ ext_segment_start = NULL;
+
+ if (ct_info->type == XctOtherCoding) {
+ /* Output the Escape sequence for switching to the charset, and
+ reserve room now for the XctReturn sequence at the end. */
+ if (ct_len < length + 3)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length + 3;
+ } else
+ /* Test whether the charset is already active. */
+ if (((side == XlcGR || side == XlcGLGR)
+ && charset != state->GR_charset)
+ || ((side == XlcGL || side == XlcGLGR)
+ && charset != state->GL_charset)) {
+
+ /* Output the Escape sequence for switching to the charset. */
+ if (ct_info->type == XctExtSeg) {
+ if (ct_len < length + 2 + ct_info->ext_segment_len)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length;
+
+ ctptr += 2;
+ ct_len -= 2;
+ ext_segment_start = ctptr;
+
+ /* The size of an extended segment must fit in 14 bits. */
+ if (ct_len > 0x3fff)
+ ct_len = 0x3fff;
+
+ memcpy(ctptr, ct_info->ext_segment, ct_info->ext_segment_len);
+ ctptr += ct_info->ext_segment_len;
+ ct_len -= ct_info->ext_segment_len;
+ } else {
+ if (ct_len < length)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length;
+ }
+ }
- if (ct_info->ext_segment) {
- if (charset != state->ext_seg_charset && state->ext_seg_left < 1) {
- length = ct_info->encoding_len;
- if (ct_len < length)
- return -1;
- strcpy(ctptr, ct_info->encoding);
- ctptr[4] = ((ct_info->ext_segment_len + csstr_len) / 128) | 0x80;
- ctptr[5] = ((ct_info->ext_segment_len + csstr_len) % 128) | 0x80;
- ctptr += length;
- ct_len -= length;
- state->ext_seg_left = csstr_len;
- }
- length = min(state->ext_seg_left, csstr_len);
- state->ext_seg_left -= length;
-
- if (side == XlcGL) {
- while (length-- > 0)
- *ctptr++ = *csptr++ & 0x7f;
- } else if (side == XlcGR) {
- while (length-- > 0)
- *ctptr++ = *csptr++ | 0x80;
- } else {
- while (length-- > 0)
- *ctptr++ = *csptr++;
- }
- state->ext_seg_charset = (state->ext_seg_left > 0) ? charset : NULL;
- } else {
- if ((side == XlcGR && charset != state->GR_charset) ||
- (side == XlcGL && charset != state->GL_charset)) {
-
- ct_len -= ct_info->encoding_len;
- if (ct_len < 0)
- return -1;
- strcpy(ctptr, ct_info->encoding);
- ctptr += ct_info->encoding_len;
- }
-
- min_ch = 0x20;
- max_ch = 0x7f;
-
- if (charset->set_size == 94) {
- max_ch--;
+ /* If the charset has side GL or GR, prepare remapping the characters
+ to the correct side. */
+ if (charset->set_size) {
+ min_ch = 0x20;
+ max_ch = 0x7f;
+ if (charset->set_size == 94) {
+ max_ch--;
if (charset->char_size > 1 || side == XlcGR)
min_ch++;
- }
+ }
+ }
+ /* Actually copy the contents. */
+ unconv_num = 0;
+ char_size = charset->char_size;
+ if (char_size == 1) {
while (csstr_len > 0 && ct_len > 0) {
- ch = *((unsigned char *) csptr++) & 0x7f;
- if (ch < min_ch || ch > max_ch)
- if (ch != 0x00 && ch != 0x09 && ch != 0x0a && ch != 0x1b)
- continue; /* XXX */
+ if (charset->set_size) {
+ /* The CompoundText specification says that the only
+ control characters allowed are 0x09, 0x0a, 0x1b, 0x9b.
+ Therefore here we eliminate other control characters. */
+ unsigned char ch = *((unsigned char *) csptr) & 0x7f;
+ if (!((ch >= min_ch && ch <= max_ch)
+ || (side == XlcGL
+ && (ch == 0x00 || ch == 0x09 || ch == 0x0a))
+ || ((side == XlcGL || side == XlcGR)
+ && (ch == 0x1b)))) {
+ csptr++;
+ csstr_len--;
+ unconv_num++;
+ continue;
+ }
+ }
+
if (side == XlcGL)
- *ctptr++ = ch & 0x7f;
+ *ctptr++ = *csptr++ & 0x7f;
else if (side == XlcGR)
- *ctptr++ = ch | 0x80;
+ *ctptr++ = *csptr++ | 0x80;
else
- *ctptr++ = ch;
+ *ctptr++ = *csptr++;
csstr_len--;
ct_len--;
}
- if (side == XlcGR)
- state->GR_charset = charset;
- else if (side == XlcGL)
- state->GL_charset = charset;
+ } else if (char_size > 1) {
+ while (csstr_len >= char_size && ct_len >= char_size) {
+ if (side == XlcGL) {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++ & 0x7f;
+ } else if (side == XlcGR) {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++ | 0x80;
+ } else {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++;
+ }
+ csstr_len -= char_size;
+ ct_len -= char_size;
+ }
+ } else {
+ /* char_size = 0. The code here is good only for valid UTF-8 input. */
+ if ((charset->ct_sequence[0] == XctESC
+ && charset->ct_sequence[1] == XctOtherCoding
+ && charset->ct_sequence[2] == 'G')
+#if UTF8_IN_EXTSEQ
+ || strcmp(charset->name, "ISO10646-1") == 0
+#endif
+ ) {
+ while (csstr_len > 0 && ct_len > 0) {
+ unsigned char ch = * (unsigned char *) csptr;
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ int i;
+ if (!(csstr_len >= char_size && ct_len >= char_size))
+ break;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++;
+ csstr_len -= char_size;
+ ct_len -= char_size;
+ }
+ } else {
+ while (csstr_len > 0 && ct_len > 0) {
+ *ctptr++ = *csptr++;
+ csstr_len--;
+ ct_len--;
+ }
+ }
}
- *from_left -= csptr - *((char **) from);
+ if (ct_info->type == XctOtherCoding) {
+ /* Terminate with an XctReturn sequence. */
+ ctptr[0] = XctESC;
+ ctptr[1] = XctOtherCoding;
+ ctptr[2] = '@';
+ ctptr += 3;
+ } else if (ext_segment_start != NULL) {
+ /* Backpatch the extended segment's length. */
+ int ext_segment_length = ctptr - ext_segment_start;
+ *(ext_segment_start - 2) = (ext_segment_length >> 7) | 0x80;
+ *(ext_segment_start - 1) = (ext_segment_length & 0x7f) | 0x80;
+ } else {
+ if (side == XlcGR || side == XlcGLGR)
+ state->GR_charset = charset;
+ if (side == XlcGL || side == XlcGLGR)
+ state->GL_charset = charset;
+ }
+
+ *from_left -= csptr - *((const char **) from);
*from = (XPointer) csptr;
*to_left -= ctptr - *((char **) to);
@@ -713,22 +1062,25 @@ cstoct(conv, from, from_left, to, to_left, args, num_args)
return 0;
}
+/* from XlcNString to XlcNCharSet */
+
static int
-strtocs(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+strtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
- register char *src, *dst;
+ const char *src;
+ char *dst;
unsigned char side;
- register int length;
+ int length;
- src = (char *) *from;
+ src = (const char *) *from;
dst = (char *) *to;
length = min(*from_left, *to_left);
@@ -737,46 +1089,54 @@ strtocs(conv, from, from_left, to, to_left, args, num_args)
while (side == (*((unsigned char *) src) & 0x80) && length-- > 0)
*dst++ = *src++;
- *from_left -= src - (char *) *from;
+ *from_left -= src - (const char *) *from;
*from = (XPointer) src;
*to_left -= dst - (char *) *to;
*to = (XPointer) dst;
if (num_args > 0)
- *((XlcCharSet *)args[0]) = side ? state->GR_charset : state->GL_charset;
+ *((XlcCharSet *)args[0]) = (side ? state->GR_charset : state->GL_charset);
return 0;
}
+/* from XlcNCharSet to XlcNString */
+
static int
-cstostr(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+cstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
State state = (State) conv->state;
- char *csptr, *string_ptr;
+ const char *csptr;
+ char *string_ptr;
int csstr_len, str_len;
unsigned char ch;
int unconv_num = 0;
- if (num_args < 1 || (state->GL_charset != (XlcCharSet) args[0] &&
- state->GR_charset != (XlcCharSet) args[0]))
+ /* This converter can only convert from ISO8859-1:GL and ISO8859-1:GR. */
+ if (num_args < 1
+ || !((XlcCharSet) args[0] == state->GL_charset
+ || (XlcCharSet) args[0] == state->GR_charset))
return -1;
- csptr = *((char **) from);
+ csptr = *((const char **) from);
string_ptr = *((char **) to);
csstr_len = *from_left;
str_len = *to_left;
- while (csstr_len-- > 0 && str_len > 0) {
+ while (csstr_len > 0 && str_len > 0) {
ch = *((unsigned char *) csptr++);
- if ((ch < 0x20 && ch != 0x00 && ch != 0x09 && ch != 0x0a) ||
- ch == 0x7f || ((ch & 0x80) && ch < 0xa0)) {
+ csstr_len--;
+ /* Citing ICCCM: "STRING as a type specifies the ISO Latin-1 character
+ set plus the control characters TAB and NEWLINE." */
+ if ((ch < 0x20 && ch != 0x00 && ch != 0x09 && ch != 0x0a)
+ || (ch >= 0x7f && ch < 0xa0)) {
unconv_num++;
continue;
}
@@ -784,7 +1144,7 @@ cstostr(conv, from, from_left, to, to_left, args, num_args)
str_len--;
}
- *from_left -= csptr - *((char **) from);
+ *from_left -= csptr - *((const char **) from);
*from = (XPointer) csptr;
*to_left -= string_ptr - *((char **) to);
@@ -794,116 +1154,141 @@ cstostr(conv, from, from_left, to, to_left, args, num_args)
}
-static void
-close_converter(conv)
- XlcConv conv;
-{
- if (conv->state)
- Xfree((char *) conv->state);
-
- Xfree((char *) conv);
-}
-
static XlcConv
-create_conv(methods)
- XlcConvMethods methods;
+create_conv(
+ XlcConvMethods methods)
{
- register XlcConv conv;
+ XlcConv conv;
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + sizeof(StateRec));
if (conv == NULL)
return (XlcConv) NULL;
- conv->state = (XPointer) Xmalloc(sizeof(StateRec));
- if (conv->state == NULL)
- goto err;
-
+ conv->state = (XPointer) &conv[1];
+
conv->methods = methods;
init_state(conv);
return conv;
+}
-err:
- close_converter(conv);
-
- return (XlcConv) NULL;
+static void
+close_converter(
+ XlcConv conv)
+{
+ /* conv->state is allocated together with conv, free both at once. */
+ Xfree((char *) conv);
}
+
static XlcConvMethodsRec cttocs_methods = {
close_converter,
cttocs,
init_state
-} ;
+};
static XlcConv
-open_cttocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cttocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&cttocs_methods);
}
+
static XlcConvMethodsRec cstoct_methods = {
close_converter,
cstoct,
init_state
-} ;
+};
static XlcConv
-open_cstoct(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstoct(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&cstoct_methods);
}
+
static XlcConvMethodsRec strtocs_methods = {
close_converter,
strtocs,
init_state
-} ;
+};
static XlcConv
-open_strtocs(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_strtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&strtocs_methods);
}
+
static XlcConvMethodsRec cstostr_methods = {
close_converter,
cstostr,
init_state
-} ;
+};
static XlcConv
-open_cstostr(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- char *from_type;
- XLCd to_lcd;
- char *to_type;
+open_cstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
{
return create_conv(&cstostr_methods);
}
-static void
-init_converter()
+
+/* =========================== Initialization =========================== */
+
+Bool
+_XlcInitCTInfo()
{
- _XlcSetConverter((XLCd) NULL, XlcNCompoundText, (XLCd) NULL, XlcNCharSet,
- open_cttocs);
- _XlcSetConverter((XLCd) NULL, XlcNString, (XLCd) NULL, XlcNCharSet,
- open_strtocs);
-
- _XlcSetConverter((XLCd) NULL, XlcNCharSet, (XLCd) NULL, XlcNCompoundText,
- open_cstoct);
- _XlcSetConverter((XLCd) NULL, XlcNCharSet, (XLCd) NULL, XlcNString,
- open_cstostr);
+ if (ct_list == NULL) {
+ CTData ct_data;
+ int num;
+ XlcCharSet charset;
+
+ /* Initialize ct_list. */
+
+ num = sizeof(default_ct_data) / sizeof(CTDataRec);
+ for (ct_data = default_ct_data; num > 0; ct_data++, num--) {
+ charset = _XlcAddCT(ct_data->name, ct_data->ct_sequence);
+ if (charset == NULL)
+ continue;
+ if (strncmp(charset->ct_sequence, "\x1b\x25\x2f", 3) != 0)
+ charset->source = CSsrcStd;
+ else
+ charset->source = CSsrcXLC;
+ }
+
+ /* Register CompoundText and CharSet converters. */
+
+ _XlcSetConverter((XLCd) NULL, XlcNCompoundText,
+ (XLCd) NULL, XlcNCharSet,
+ open_cttocs);
+ _XlcSetConverter((XLCd) NULL, XlcNString,
+ (XLCd) NULL, XlcNCharSet,
+ open_strtocs);
+
+ _XlcSetConverter((XLCd) NULL, XlcNCharSet,
+ (XLCd) NULL, XlcNCompoundText,
+ open_cstoct);
+ _XlcSetConverter((XLCd) NULL, XlcNCharSet,
+ (XLCd) NULL, XlcNString,
+ open_cstostr);
+ }
+
+ return True;
}
diff --git a/src/xlibi18n/lcCharSet.c b/src/xlibi18n/lcCharSet.c
index e9a376b0..bebbe562 100644
--- a/src/xlibi18n/lcCharSet.c
+++ b/src/xlibi18n/lcCharSet.c
@@ -23,46 +23,14 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcCharSet.c,v 3.9 2001/07/25 15:04:45 dawes Exp $ */
#include <stdio.h>
#include "Xlibint.h"
#include "XlcPublic.h"
+#include "XlcPubI.h"
-#if NeedVarargsPrototypes
-char *
-_XlcGetCSValues(XlcCharSet charset, ...)
-#else
-char *
-_XlcGetCSValues(charset, va_alist)
- XlcCharSet charset;
- va_dcl
-#endif
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- Va_start(var, charset);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- Va_start(var, charset);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- if (charset->get_values)
- ret = (*charset->get_values)(charset, args, num_args);
- else
- ret = args->name;
-
- Xfree(args);
-
- return ret;
-}
+/* The list of all known XlcCharSets. They are identified by their name. */
typedef struct _XlcCharSetListRec {
XlcCharSet charset;
@@ -71,9 +39,11 @@ typedef struct _XlcCharSetListRec {
static XlcCharSetList charset_list = NULL;
+/* Returns the charset with the given name (including side suffix).
+ Returns NULL if not found. */
XlcCharSet
-_XlcGetCharSet(name)
- char *name;
+_XlcGetCharSet(
+ const char *name)
{
XlcCharSetList list;
XrmQuark xrm_name;
@@ -88,9 +58,33 @@ _XlcGetCharSet(name)
return (XlcCharSet) NULL;
}
+/* Returns the charset with the given encoding (no side suffix) and
+ responsible for at least the given side (XlcGL or XlcGR).
+ Returns NULL if not found. */
+XlcCharSet
+_XlcGetCharSetWithSide(
+ const char *encoding_name,
+ XlcSide side)
+{
+ XlcCharSetList list;
+ XrmQuark xrm_encoding_name;
+
+ xrm_encoding_name = XrmStringToQuark(encoding_name);
+
+ for (list = charset_list; list; list = list->next) {
+ if (list->charset->xrm_encoding_name == xrm_encoding_name
+ && (list->charset->side == XlcGLGR || list->charset->side == side))
+ return (XlcCharSet) list->charset;
+ }
+
+ return (XlcCharSet) NULL;
+}
+
+/* Registers an XlcCharSet in the list of character sets.
+ Returns True if successful. */
Bool
-_XlcAddCharSet(charset)
- XlcCharSet charset;
+_XlcAddCharSet(
+ XlcCharSet charset)
{
XlcCharSetList list;
@@ -108,6 +102,7 @@ _XlcAddCharSet(charset)
return True;
}
+/* List of resources for XlcCharSet. */
static XlcResource resources[] = {
{ XlcNName, NULLQUARK, sizeof(char *),
XOffsetOf(XlcCharSetRec, name), XlcGetMask },
@@ -123,11 +118,14 @@ static XlcResource resources[] = {
XOffsetOf(XlcCharSetRec, ct_sequence), XlcGetMask }
};
+/* Retrieves a number of attributes of an XlcCharSet.
+ Return NULL if successful, otherwise the name of the first argument
+ specifiying a nonexistent attribute. */
static char *
-get_values(charset, args, num_args)
- register XlcCharSet charset;
- register XlcArgList args;
- register int num_args;
+get_values(
+ XlcCharSet charset,
+ XlcArgList args,
+ int num_args)
{
if (resources[0].xrm_name == NULLQUARK)
_XlcCompileResourceList(resources, XlcNumber(resources));
@@ -136,29 +134,92 @@ get_values(charset, args, num_args)
args, num_args, XlcGetMask);
}
+/* Retrieves a number of attributes of an XlcCharSet.
+ Return NULL if successful, otherwise the name of the first argument
+ specifiying a nonexistent attribute. */
+char *
+_XlcGetCSValues(XlcCharSet charset, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, charset);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, charset);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = get_values(charset, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes). */
XlcCharSet
-_XlcCreateDefaultCharSet(name, ct_sequence)
- char *name;
- char *ct_sequence;
+_XlcCreateDefaultCharSet(
+ const char *name,
+ const char *ct_sequence)
{
XlcCharSet charset;
+ int name_len, ct_sequence_len;
+ const char *colon;
+ char *tmp;
charset = (XlcCharSet) Xmalloc(sizeof(XlcCharSetRec));
if (charset == NULL)
return (XlcCharSet) NULL;
bzero((char *) charset, sizeof(XlcCharSetRec));
-
- charset->name = (char *) Xmalloc(strlen(name) + strlen(ct_sequence) + 2);
- if (charset->name == NULL) {
+
+ name_len = strlen(name);
+ ct_sequence_len = strlen(ct_sequence);
+
+ /* Fill in name and xrm_name. */
+ tmp = (char *) Xmalloc(name_len + 1 + ct_sequence_len + 1);
+ if (tmp == NULL) {
Xfree((char *) charset);
return (XlcCharSet) NULL;
}
- strcpy(charset->name, name);
- charset->ct_sequence = charset->name + strlen(name) + 1;
- strcpy(charset->ct_sequence, ct_sequence);
- charset->get_values = get_values;
+ memcpy(tmp, name, name_len+1);
+ charset->name = tmp;
+ charset->xrm_name = XrmStringToQuark(charset->name);
+
+ /* Fill in encoding_name and xrm_encoding_name. */
+ if ((colon = strchr(charset->name, ':')) != NULL) {
+ unsigned int length = colon - charset->name;
+ char *encoding_tmp = (char *) Xmalloc(length + 1);
+ if (encoding_tmp == NULL) {
+ Xfree((char *) charset->name);
+ Xfree((char *) charset);
+ return (XlcCharSet) NULL;
+ }
+ memcpy(encoding_tmp, charset->name, length);
+ encoding_tmp[length] = '\0';
+ charset->encoding_name = encoding_tmp;
+ charset->xrm_encoding_name = XrmStringToQuark(charset->encoding_name);
+ } else {
+ charset->encoding_name = charset->name;
+ charset->xrm_encoding_name = charset->xrm_name;
+ }
+
+ /* Fill in ct_sequence. */
+ tmp += name_len + 1;
+ memcpy(tmp, ct_sequence, ct_sequence_len+1);
+ charset->ct_sequence = tmp;
- _XlcParseCharSet(charset);
+ /* Fill in side, char_size, set_size. */
+ if (!_XlcParseCharSet(charset))
+ /* If ct_sequence is not usable in Compound Text, remove it. */
+ charset->ct_sequence = "";
return (XlcCharSet) charset;
}
diff --git a/src/xlibi18n/lcConv.c b/src/xlibi18n/lcConv.c
index f03adcc6..2c76f3ee 100644
--- a/src/xlibi18n/lcConv.c
+++ b/src/xlibi18n/lcConv.c
@@ -23,41 +23,40 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcConv.c,v 1.6 2001/01/17 19:41:53 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
#include <stdio.h>
-typedef XlcConv (*XlcConverter)();
-
typedef struct _XlcConverterListRec {
XLCd from_lcd;
- char *from;
+ const char *from;
XrmQuark from_type;
XLCd to_lcd;
- char *to;
+ const char *to;
XrmQuark to_type;
- XlcConverter converter;
+ XlcOpenConverterProc converter;
struct _XlcConverterListRec *next;
} XlcConverterListRec, *XlcConverterList;
static XlcConverterList conv_list = NULL;
static void
-close_converter(conv)
- XlcConv conv;
+close_converter(
+ XlcConv conv)
{
(*conv->methods->close)(conv);
}
static XlcConv
-get_converter(from_lcd, from_type, to_lcd, to_type)
- XLCd from_lcd;
- XrmQuark from_type;
- XLCd to_lcd;
- XrmQuark to_type;
+get_converter(
+ XLCd from_lcd,
+ XrmQuark from_type,
+ XLCd to_lcd,
+ XrmQuark to_type)
{
- register XlcConverterList list, prev = NULL;
+ XlcConverterList list, prev = NULL;
for (list = conv_list; list; list = list->next) {
if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
@@ -74,20 +73,20 @@ get_converter(from_lcd, from_type, to_lcd, to_type)
prev = list;
}
-
+
return (XlcConv) NULL;
}
Bool
-_XlcSetConverter(from_lcd, from, to_lcd, to, converter)
- XLCd from_lcd;
- char *from;
- XLCd to_lcd;
- char *to;
- XlcOpenConverterProc converter;
+_XlcSetConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to,
+ XlcOpenConverterProc converter)
{
- register XlcConverterList list;
- register XrmQuark from_type, to_type;
+ XlcConverterList list;
+ XrmQuark from_type, to_type;
from_type = XrmStringToQuark(from);
to_type = XrmStringToQuark(to);
@@ -104,7 +103,7 @@ _XlcSetConverter(from_lcd, from, to_lcd, to, converter)
list = (XlcConverterList) Xmalloc(sizeof(XlcConverterListRec));
if (list == NULL)
return False;
-
+
list->from_lcd = from_lcd;
list->from = from;
list->from_type = from_type;
@@ -124,14 +123,14 @@ typedef struct _ConvRec {
} ConvRec, *Conv;
static int
-indirect_convert(lc_conv, from, from_left, to, to_left, args, num_args)
- XlcConv lc_conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+indirect_convert(
+ XlcConv lc_conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
Conv conv = (Conv) lc_conv->state;
XlcConv from_conv = conv->from_conv;
@@ -161,28 +160,35 @@ indirect_convert(lc_conv, from, from_left, to, to_left, args, num_args)
if (ret < 0)
break;
- length = cs_left = cs - buf;
- cs = buf;
+ unconv_num += ret;
+
+ length = cs - buf;
+ if (length > 0) {
+ cs_left = length;
+ cs = buf;
- tmp_args[0] = (XPointer) charset;
+ tmp_args[0] = (XPointer) charset;
- ret = (*to_conv->methods->convert)(to_conv, &cs, &cs_left, to, to_left,
- tmp_args, 1);
- if (ret < 0) {
- unconv_num += length / charset->char_size;
- continue;
+ ret = (*to_conv->methods->convert)(to_conv, &cs, &cs_left, to, to_left,
+ tmp_args, 1);
+ if (ret < 0) {
+ unconv_num += length / (charset->char_size > 0 ? charset->char_size : 1);
+ continue;
+ }
+
+ unconv_num += ret;
+
+ if (*to_left < 1)
+ break;
}
-
- if (*to_left < 1)
- break;
}
return unconv_num;
}
static void
-close_indirect_converter(lc_conv)
- XlcConv lc_conv;
+close_indirect_converter(
+ XlcConv lc_conv)
{
Conv conv = (Conv) lc_conv->state;
@@ -199,8 +205,8 @@ close_indirect_converter(lc_conv)
}
static void
-reset_indirect_converter(lc_conv)
- XlcConv lc_conv;
+reset_indirect_converter(
+ XlcConv lc_conv)
{
Conv conv = (Conv) lc_conv->state;
@@ -219,11 +225,11 @@ static XlcConvMethodsRec conv_methods = {
} ;
static XlcConv
-open_indirect_converter(from_lcd, from, to_lcd, to)
- XLCd from_lcd;
- char *from;
- XLCd to_lcd;
- char *to;
+open_indirect_converter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
{
XlcConv lc_conv, from_conv, to_conv;
Conv conv;
@@ -246,13 +252,13 @@ open_indirect_converter(from_lcd, from, to_lcd, to)
lc_conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
if (lc_conv == NULL)
return (XlcConv) NULL;
-
+
lc_conv->methods = &conv_methods;
lc_conv->state = (XPointer) Xcalloc(1, sizeof(ConvRec));
if (lc_conv->state == NULL)
goto err;
-
+
conv = (Conv) lc_conv->state;
from_conv = get_converter(from_lcd, from_type, from_lcd, QCTCharSet);
@@ -284,11 +290,11 @@ err:
}
XlcConv
-_XlcOpenConverter(from_lcd, from, to_lcd, to)
- XLCd from_lcd;
- char *from;
- XLCd to_lcd;
- char *to;
+_XlcOpenConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
{
XlcConv conv;
XrmQuark from_type, to_type;
@@ -298,34 +304,34 @@ _XlcOpenConverter(from_lcd, from, to_lcd, to)
if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)))
return conv;
-
+
return open_indirect_converter(from_lcd, from, to_lcd, to);
}
void
-_XlcCloseConverter(conv)
- XlcConv conv;
+_XlcCloseConverter(
+ XlcConv conv)
{
close_converter(conv);
}
int
-_XlcConvert(conv, from, from_left, to, to_left, args, num_args)
- XlcConv conv;
- XPointer *from;
- int *from_left;
- XPointer *to;
- int *to_left;
- XPointer *args;
- int num_args;
+_XlcConvert(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
{
return (*conv->methods->convert)(conv, from, from_left, to, to_left, args,
num_args);
}
void
-_XlcResetConverter(conv)
- XlcConv conv;
+_XlcResetConverter(
+ XlcConv conv)
{
if (conv->methods->reset)
(*conv->methods->reset)(conv);
diff --git a/src/xlibi18n/lcDB.c b/src/xlibi18n/lcDB.c
index a6d8648b..8e12a699 100644
--- a/src/xlibi18n/lcDB.c
+++ b/src/xlibi18n/lcDB.c
@@ -28,6 +28,10 @@
* This is source code modified by FUJITSU LIMITED under the Joint
* Development Agreement for the CDE/Motif PST.
*/
+/* $XFree86: xc/lib/X11/lcDB.c,v 3.15 2002/05/31 18:45:42 dawes Exp $ */
+
+
+
#ifndef NOT_X_ENV
#include <X11/Xlib.h>
@@ -92,21 +96,22 @@ typedef enum {
typedef struct {
Token token; /* token id */
- char *name; /* token sequence */
+ const char *name; /* token sequence */
int len; /* length of token sequence */
- int (*parse_proc)(); /* parsing procedure */
+ int (*parse_proc)(const char *str, Token token, Database *db);
+ /* parsing procedure */
} TokenTable;
-static int f_newline();
-static int f_comment();
-static int f_semicolon();
-static int f_double_quote();
-static int f_left_brace();
-static int f_right_brace();
-static int f_white();
-static int f_backslash();
-static int f_numeric();
-static int f_default();
+static int f_newline (const char *str, Token token, Database *db);
+static int f_comment (const char *str, Token token, Database *db);
+static int f_semicolon (const char *str, Token token, Database *db);
+static int f_double_quote (const char *str, Token token, Database *db);
+static int f_left_brace (const char *str, Token token, Database *db);
+static int f_right_brace (const char *str, Token token, Database *db);
+static int f_white (const char *str, Token token, Database *db);
+static int f_backslash (const char *str, Token token, Database *db);
+static int f_numeric (const char *str, Token token, Database *db);
+static int f_default (const char *str, Token token, Database *db);
static TokenTable token_tbl[] = {
{ T_NEWLINE, "\n", 1, f_newline },
@@ -122,9 +127,10 @@ static TokenTable token_tbl[] = {
{ T_NUMERIC_DEC, "\\d", 2, f_numeric },
{ T_NUMERIC_OCT, "\\o", 2, f_numeric },
{ T_DEFAULT, " ", 1, f_default }, /* any character */
- 0
+ {0}
};
+#define SYM_CR '\r'
#define SYM_NEWLINE '\n'
#define SYM_COMMENT '#'
#define SYM_SEMICOLON ';'
@@ -154,17 +160,18 @@ typedef struct {
static DBParseInfo parse_info;
-static void init_parse_info()
+static void
+init_parse_info (void)
{
- static int first = 1;
+ static int allocated /* = 0 */;
char *ptr;
- int size;
- if(first == 1){
+ int size;
+ if (!allocated) {
bzero(&parse_info, sizeof(DBParseInfo));
parse_info.buf = (char *)Xmalloc(BUFSIZE);
parse_info.bufMaxSize = BUFSIZE;
- first = 0;
- return ;
+ allocated = 1;
+ return;
}
ptr = parse_info.buf;
size = parse_info.bufMaxSize;
@@ -174,22 +181,22 @@ static void init_parse_info()
}
static void
-clear_parse_info()
+clear_parse_info (void)
{
int i;
char *ptr;
int size;
parse_info.pre_state = S_NULL;
- if(parse_info.category != NULL){
+ if (parse_info.category != NULL) {
Xfree(parse_info.category);
}
- for(i = 0; i <= parse_info.nest_depth; ++i){
- if(parse_info.name[i]){
+ for (i = 0; i <= parse_info.nest_depth; ++i) {
+ if (parse_info.name[i]) {
Xfree(parse_info.name[i]);
}
}
- if(parse_info.value){
- if(*parse_info.value){
+ if (parse_info.value) {
+ if (*parse_info.value) {
Xfree(*parse_info.value);
}
Xfree((char *)parse_info.value);
@@ -202,23 +209,22 @@ clear_parse_info()
}
static Bool
-realloc_parse_info(len)
-int len;
+realloc_parse_info(
+ int len)
{
char *p;
-
- parse_info.bufMaxSize = BUFSIZE *
- ((parse_info.bufsize + len)/BUFSIZE + 1);
+ parse_info.bufMaxSize = BUFSIZE * ((parse_info.bufsize + len)/BUFSIZE + 1);
p = (char *)Xrealloc(parse_info.buf, parse_info.bufMaxSize);
- if(p == NULL){
- return(False);
- }
+ if (p == NULL)
+ return False;
parse_info.buf = p;
- return(True);
+ return True;
}
+
/************************************************************************/
+
typedef struct _Line {
char *str;
int cursize;
@@ -227,28 +233,28 @@ typedef struct _Line {
} Line;
static void
-free_line(line)
- Line *line;
+free_line(
+ Line *line)
{
- if(line->str != NULL){
+ if (line->str != NULL) {
Xfree(line->str);
}
bzero(line, sizeof(Line));
}
static int
-realloc_line(line, size)
- Line *line;
- int size;
+realloc_line(
+ Line *line,
+ int size)
{
char *str = line->str;
- if(str != NULL){
+ if (str != NULL) {
str = (char *)Xrealloc(str, size);
- }else{
+ } else {
str = (char *)Xmalloc(size);
}
- if(str == NULL){
+ if (str == NULL) {
/* malloc error */
if (line->str != NULL) {
Xfree(line->str);
@@ -264,34 +270,34 @@ realloc_line(line, size)
#define iswhite(ch) ((ch) == SYM_SPACE || (ch) == SYM_TAB)
static void
-zap_comment(str, quoted)
- char *str;
- int *quoted;
+zap_comment(
+ char *str,
+ int *quoted)
{
char *p = str;
#ifdef never
*quoted = 0;
- if(*p == SYM_COMMENT){
+ if (*p == SYM_COMMENT) {
int len = strlen(str);
- if(p[len - 1] == SYM_NEWLINE){
+ if (p[len - 1] == SYM_NEWLINE || p[len - 1] == SYM_CR) {
*p++ = SYM_NEWLINE;
}
*p = '\0';
}
#else
- while(*p){
- if(*p == SYM_DOUBLE_QUOTE){
- if(p == str || p[-1] != SYM_BACKSLASH){
+ while (*p) {
+ if (*p == SYM_DOUBLE_QUOTE) {
+ if (p == str || p[-1] != SYM_BACKSLASH) {
/* unescaped double quote changes quoted state. */
*quoted = *quoted ? 0 : 1;
}
}
- if(*p == SYM_COMMENT && !*quoted){
+ if (*p == SYM_COMMENT && !*quoted) {
int pos = p - str;
- if(pos == 0 ||
- iswhite(p[-1]) && (pos == 1 || p[-2] != SYM_BACKSLASH)){
+ if (pos == 0 ||
+ (iswhite(p[-1]) && (pos == 1 || p[-2] != SYM_BACKSLASH))) {
int len = strlen(p);
- if(len > 0 && p[len - 1] == SYM_NEWLINE){
+ if (len > 0 && (p[len - 1] == SYM_NEWLINE || p[len-1] == SYM_CR)) {
/* newline is the identifier for finding end of value.
therefore, it should not be removed. */
*p++ = SYM_NEWLINE;
@@ -306,9 +312,9 @@ zap_comment(str, quoted)
}
static int
-read_line(fd, line)
- FILE *fd;
- Line *line;
+read_line(
+ FILE *fd,
+ Line *line)
{
char buf[BUFSIZE], *p;
int len;
@@ -319,19 +325,19 @@ read_line(fd, line)
str = line->str;
cur = line->cursize = 0;
- while((p = fgets(buf, BUFSIZE, fd)) != NULL){
+ while ((p = fgets(buf, BUFSIZE, fd)) != NULL) {
++line->seq;
zap_comment(p, &quoted); /* remove comment line */
len = strlen(p);
- if(len == 0){
- if(cur > 0){
+ if (len == 0) {
+ if (cur > 0) {
break;
}
continue;
}
- if(cur + len + 1 > line->maxsize){
+ if (cur + len + 1 > line->maxsize) {
/* need to reallocate buffer. */
- if(! realloc_line(line, line->maxsize + BUFSIZE)){
+ if (! realloc_line(line, line->maxsize + BUFSIZE)) {
return -1; /* realloc error. */
}
str = line->str;
@@ -340,19 +346,28 @@ read_line(fd, line)
cur += len;
str[cur] = '\0';
- if(!quoted){
- if(cur > 1 && str[cur - 2] == SYM_BACKSLASH &&
- str[cur - 1] == SYM_NEWLINE){
- /* the line is ended backslash followed by newline.
- need to concatinate the next line. */
- cur -= 2;
- str[cur] = '\0';
- }else{
- break;
- }
+#ifdef __UNIXOS2__ /* Take out carriage returns under OS/2 */
+ if (cur>1) {
+ if (str[cur-2] == '\r' && str[cur-1] == '\n') {
+ str[cur-2] = '\n';
+ str[cur-1] = '\0';
+ cur--;
+ }
+ }
+#endif
+ if (!quoted && cur > 1 && str[cur - 2] == SYM_BACKSLASH &&
+ (str[cur - 1] == SYM_NEWLINE || str[cur-1] == SYM_CR)) {
+ /* the line is ended backslash followed by newline.
+ need to concatinate the next line. */
+ cur -= 2;
+ str[cur] = '\0';
+ } else if (len < BUFSIZE - 1 || buf[len - 1] == SYM_NEWLINE ||
+ buf[len - 1] == SYM_CR) {
+ /* the line is shorter than BUFSIZE. */
+ break;
}
}
- if(quoted){
+ if (quoted) {
/* error. still in quoted state. */
return -1;
}
@@ -362,20 +377,21 @@ read_line(fd, line)
/************************************************************************/
static Token
-get_token(str)
- char *str;
+get_token(
+ const char *str)
{
- switch(*str){
- case SYM_NEWLINE: return T_NEWLINE;
- case SYM_COMMENT: return T_COMMENT;
- case SYM_SEMICOLON: return T_SEMICOLON;
+ switch (*str) {
+ case SYM_NEWLINE:
+ case SYM_CR: return T_NEWLINE;
+ case SYM_COMMENT: return T_COMMENT;
+ case SYM_SEMICOLON: return T_SEMICOLON;
case SYM_DOUBLE_QUOTE: return T_DOUBLE_QUOTE;
case SYM_LEFT_BRACE: return T_LEFT_BRACE;
case SYM_RIGHT_BRACE: return T_RIGHT_BRACE;
- case SYM_SPACE: return T_SPACE;
- case SYM_TAB: return T_TAB;
+ case SYM_SPACE: return T_SPACE;
+ case SYM_TAB: return T_TAB;
case SYM_BACKSLASH:
- switch(str[1]){
+ switch (str[1]) {
case 'x': return T_NUMERIC_HEX;
case 'd': return T_NUMERIC_DEC;
case 'o': return T_NUMERIC_OCT;
@@ -387,26 +403,25 @@ get_token(str)
}
static int
-get_word(str, word)
- char *str;
- char *word;
+get_word(
+ const char *str,
+ char *word)
{
- char *p = str, *w = word;
+ const char *p = str;
+ char *w = word;
Token token;
int token_len;
- while(*p != '\0'){
+ while (*p != '\0') {
token = get_token(p);
token_len = token_tbl[token].len;
- if(token == T_BACKSLASH){
+ if (token == T_BACKSLASH) {
p += token_len;
- if(*p == '\0'){
+ if (*p == '\0')
break;
- }
token = get_token(p);
token_len = token_tbl[token].len;
- }else if(token != T_COMMENT &&
- token != T_DEFAULT){
+ } else if (token != T_COMMENT && token != T_DEFAULT) {
break;
}
strncpy(w, p, token_len);
@@ -417,27 +432,28 @@ get_word(str, word)
}
static int
-get_quoted_word(str, word)
- char *str;
- char *word;
+get_quoted_word(
+ const char *str,
+ char *word)
{
- char *p = str, *w = word;
+ const char *p = str;
+ char *w = word;
Token token;
int token_len;
- if(*p == SYM_DOUBLE_QUOTE){
+ if (*p == SYM_DOUBLE_QUOTE) {
++p;
}
- while(*p != '\0'){
+ while (*p != '\0') {
token = get_token(p);
token_len = token_tbl[token].len;
- if(token == T_DOUBLE_QUOTE){
+ if (token == T_DOUBLE_QUOTE) {
p += token_len;
goto found;
}
- if(token == T_BACKSLASH){
+ if (token == T_BACKSLASH) {
p += token_len;
- if(*p == '\0'){
+ if (*p == '\0') {
break;
}
token = get_token(p);
@@ -457,7 +473,7 @@ get_quoted_word(str, word)
/************************************************************************/
static int
-append_value_list()
+append_value_list (void)
{
char **value_list = parse_info.value;
char *value;
@@ -467,45 +483,44 @@ append_value_list()
int len = parse_info.bufsize;
char *p;
- if(len < 1){
+ if (len < 1) {
return 1; /* return with no error */
}
- if(value_list == (char **)NULL){
+ if (value_list == (char **)NULL) {
value_list = (char **)Xmalloc(sizeof(char *) * 2);
*value_list = NULL;
- }else{
+ } else {
char **prev_list = value_list;
value_list = (char **)
Xrealloc(value_list, sizeof(char *) * (value_num + 2));
- if (value_list == NULL){
+ if (value_list == NULL) {
Xfree(prev_list);
}
}
- if(value_list == (char **)NULL){
- goto err;
- }
+ if (value_list == (char **)NULL)
+ goto err2;
value = *value_list;
- if(value == NULL){
+ if (value == NULL) {
value = (char *)Xmalloc(value_len + len + 1);
- }else{
+ } else {
char *prev_value = value;
value = (char *)Xrealloc(value, value_len + len + 1);
- if (value == NULL){
+ if (value == NULL) {
Xfree(prev_value);
}
}
- if(value == NULL){
- goto err;
+ if (value == NULL) {
+ goto err1;
}
- if(value != *value_list){
+ if (value != *value_list) {
int delta, i;
delta = value - *value_list;
*value_list = value;
- for(i = 1; i < value_num; ++i){
+ for (i = 1; i < value_num; ++i) {
value_list[i] += delta;
}
}
@@ -521,13 +536,14 @@ append_value_list()
parse_info.bufsize = 0;
return 1;
- err:
- if(value_list){
+ err1:
+ if (value_list) {
Xfree((char **)value_list);
}
- if(value){
+ if (value) {
Xfree(value);
}
+ err2:
parse_info.value = (char **)NULL;
parse_info.value_num = 0;
parse_info.value_len = 0;
@@ -536,14 +552,15 @@ append_value_list()
}
static int
-construct_name(name, size)
- char *name;
- int size;
+construct_name(
+ char *name,
+ int size)
{
- register int i, len = 0;
+ int i;
+ int len = 0;
char *p = name;
- for(i = 0; i <= parse_info.nest_depth; ++i){
+ for (i = 0; i <= parse_info.nest_depth; ++i) {
len += strlen(parse_info.name[i]) + 1;
}
if (len >= size)
@@ -551,7 +568,7 @@ construct_name(name, size)
strcpy(p, parse_info.name[0]);
p += strlen(parse_info.name[0]);
- for(i = 1; i <= parse_info.nest_depth; ++i){
+ for (i = 1; i <= parse_info.nest_depth; ++i) {
*p++ = '.';
strcpy(p, parse_info.name[i]);
p += strlen(parse_info.name[i]);
@@ -560,39 +577,39 @@ construct_name(name, size)
}
static int
-store_to_database(db)
- Database *db;
+store_to_database(
+ Database *db)
{
Database new = (Database)NULL;
char name[BUFSIZE];
- if(parse_info.pre_state == S_VALUE){
- if(! append_value_list()){
+ if (parse_info.pre_state == S_VALUE) {
+ if (! append_value_list()) {
goto err;
}
}
- if(parse_info.name[parse_info.nest_depth] == NULL){
+ if (parse_info.name[parse_info.nest_depth] == NULL) {
goto err;
}
new = (Database)Xmalloc(sizeof(DatabaseRec));
- if(new == (Database)NULL){
+ if (new == (Database)NULL) {
goto err;
}
bzero(new, sizeof(DatabaseRec));
new->category = (char *)Xmalloc(strlen(parse_info.category) + 1);
- if(new->category == NULL){
+ if (new->category == NULL) {
goto err;
}
strcpy(new->category, parse_info.category);
- if(! construct_name(name, sizeof(name))){
+ if (! construct_name(name, sizeof(name))) {
goto err;
}
new->name = (char *)Xmalloc(strlen(name) + 1);
- if(new->name == NULL){
+ if (new->name == NULL) {
goto err;
}
strcpy(new->name, name);
@@ -611,16 +628,16 @@ store_to_database(db)
return 1;
err:
- if(new){
- if(new->category){
+ if (new) {
+ if (new->category) {
Xfree(new->category);
}
- if(new->name){
+ if (new->name) {
Xfree(new->name);
}
}
- if(parse_info.value){
- if(*parse_info.value){
+ if (parse_info.value) {
+ if (*parse_info.value) {
Xfree(*parse_info.value);
}
Xfree((char **)parse_info.value);
@@ -635,23 +652,23 @@ store_to_database(db)
#define END_MARK_LEN 3 /*strlen(END_MARK)*/
static int
-check_category_end(str)
- char *str;
+check_category_end(
+ const char *str)
{
- char *p;
+ const char *p;
int len;
p = str;
- if(strncmp(p, END_MARK, END_MARK_LEN)){
+ if (strncmp(p, END_MARK, END_MARK_LEN)) {
return 0;
}
p += END_MARK_LEN;
- while(iswhite(*p)){
+ while (iswhite(*p)) {
++p;
}
len = strlen(parse_info.category);
- if(strncmp(p, parse_info.category, len)){
+ if (strncmp(p, parse_info.category, len)) {
return 0;
}
p += len;
@@ -661,19 +678,19 @@ check_category_end(str)
/************************************************************************/
static int
-f_newline(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_newline(
+ const char *str,
+ Token token,
+ Database *db)
{
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
break;
case S_NAME:
return 0; /* no value */
case S_VALUE:
- if(!store_to_database(db))
+ if (!store_to_database(db))
return 0;
parse_info.pre_state = S_CATEGORY;
break;
@@ -684,49 +701,49 @@ f_newline(str, token, db)
}
static int
-f_comment(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_comment(
+ const char *str,
+ Token token,
+ Database *db)
{
/* NOTE: comment is already handled in read_line(),
so this function is not necessary. */
- char *p = str;
+ const char *p = str;
- while(*p != SYM_NEWLINE && *p != '\0'){
+ while (*p != SYM_NEWLINE && *p != SYM_CR && *p != '\0') {
++p; /* zap to the end of line */
}
return p - str;
}
static int
-f_white(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_white(
+ const char *str,
+ Token token,
+ Database *db)
{
- char *p = str;
+ const char *p = str;
- while(iswhite(*p)){
+ while (iswhite(*p)) {
++p;
}
return p - str;
}
static int
-f_semicolon(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_semicolon(
+ const char *str,
+ Token token,
+ Database *db)
{
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
case S_NAME:
return 0;
case S_VALUE:
- if(! append_value_list())
+ if (! append_value_list())
return 0;
parse_info.pre_state = S_VALUE;
break;
@@ -737,19 +754,19 @@ f_semicolon(str, token, db)
}
static int
-f_left_brace(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_left_brace(
+ const char *str,
+ Token token,
+ Database *db)
{
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
case S_VALUE:
return 0;
case S_NAME:
- if(parse_info.name[parse_info.nest_depth] == NULL ||
- parse_info.nest_depth + 1 > MAX_NAME_NEST)
+ if (parse_info.name[parse_info.nest_depth] == NULL
+ || parse_info.nest_depth + 1 > MAX_NAME_NEST)
return 0;
++parse_info.nest_depth;
parse_info.pre_state = S_CATEGORY;
@@ -761,24 +778,24 @@ f_left_brace(str, token, db)
}
static int
-f_right_brace(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_right_brace(
+ const char *str,
+ Token token,
+ Database *db)
{
- if(parse_info.nest_depth < 1)
+ if (parse_info.nest_depth < 1)
return 0;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_NAME:
return 0;
case S_VALUE:
- if(! store_to_database(db))
+ if (! store_to_database(db))
return 0;
/* fall into next case */
case S_CATEGORY:
- if(parse_info.name[parse_info.nest_depth] != NULL){
+ if (parse_info.name[parse_info.nest_depth] != NULL) {
Xfree(parse_info.name[parse_info.nest_depth]);
parse_info.name[parse_info.nest_depth] = NULL;
}
@@ -792,10 +809,10 @@ f_right_brace(str, token, db)
}
static int
-f_double_quote(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_double_quote(
+ const char *str,
+ Token token,
+ Database *db)
{
char word[BUFSIZE];
char* wordp;
@@ -809,18 +826,18 @@ f_double_quote(str, token, db)
return 0;
len = 0;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
goto err;
case S_NAME:
case S_VALUE:
len = get_quoted_word(str, wordp);
- if(len < 1)
+ if (len < 1)
goto err;
- if( (parse_info.bufsize + (int)strlen(wordp) +1)
- >= parse_info.bufMaxSize){
- if(realloc_parse_info(strlen(wordp) +1) == False){
+ if ((parse_info.bufsize + (int)strlen(wordp) + 1)
+ >= parse_info.bufMaxSize) {
+ if (realloc_parse_info(strlen(wordp)+1) == False) {
goto err;
}
}
@@ -831,30 +848,33 @@ f_double_quote(str, token, db)
default:
goto err;
}
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return len; /* including length of token */
err:
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return 0;
}
static int
-f_backslash(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_backslash(
+ const char *str,
+ Token token,
+ Database *db)
{
return f_default(str, token, db);
}
static int
-f_numeric(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_numeric(
+ const char *str,
+ Token token,
+ Database *db)
{
- char word[BUFSIZE], *p;
+ char word[BUFSIZE];
+ const char *p;
char* wordp;
int len;
int token_len;
@@ -866,7 +886,7 @@ f_numeric(str, token, db)
if (wordp == NULL)
return 0;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
case S_CATEGORY:
goto err;
@@ -875,11 +895,11 @@ f_numeric(str, token, db)
token_len = token_tbl[token].len;
p = str + token_len;
len = get_word(p, wordp);
- if(len < 1)
+ if (len < 1)
goto err;
- if( (parse_info.bufsize + token_len + (int)strlen(wordp) +1)
- >= parse_info.bufMaxSize){
- if(realloc_parse_info(token_len + strlen(wordp) +1) == False)
+ if ((parse_info.bufsize + token_len + (int)strlen(wordp) + 1)
+ >= parse_info.bufMaxSize) {
+ if (realloc_parse_info(token_len + strlen(wordp) + 1) == False)
goto err;
}
strncpy(&parse_info.buf[parse_info.bufsize], str, token_len);
@@ -890,19 +910,21 @@ f_numeric(str, token, db)
default:
goto err;
}
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return len + token_len;
err:
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return 0;
}
static int
-f_default(str, token, db)
- char *str;
- Token token;
- Database *db;
+f_default(
+ const char *str,
+ Token token,
+ Database *db)
{
char word[BUFSIZE], *p;
char* wordp;
@@ -916,23 +938,23 @@ f_default(str, token, db)
return 0;
len = get_word(str, wordp);
- if(len < 1)
+ if (len < 1)
goto err;
- switch(parse_info.pre_state){
+ switch (parse_info.pre_state) {
case S_NULL:
- if(parse_info.category != NULL)
+ if (parse_info.category != NULL)
goto err;
p = (char *)Xmalloc(strlen(wordp) + 1);
- if(p == NULL)
+ if (p == NULL)
goto err;
strcpy(p, wordp);
parse_info.category = p;
parse_info.pre_state = S_CATEGORY;
break;
case S_CATEGORY:
- if(parse_info.nest_depth == 0){
- if(check_category_end(str)){
+ if (parse_info.nest_depth == 0) {
+ if (check_category_end(str)) {
/* end of category is detected.
clear context and zap to end of this line */
clear_parse_info();
@@ -941,10 +963,10 @@ f_default(str, token, db)
}
}
p = (char *)Xmalloc(strlen(wordp) + 1);
- if(p == NULL)
+ if (p == NULL)
goto err;
strcpy(p, wordp);
- if(parse_info.name[parse_info.nest_depth] != NULL){
+ if (parse_info.name[parse_info.nest_depth] != NULL) {
Xfree(parse_info.name[parse_info.nest_depth]);
}
parse_info.name[parse_info.nest_depth] = p;
@@ -952,9 +974,9 @@ f_default(str, token, db)
break;
case S_NAME:
case S_VALUE:
- if( (parse_info.bufsize + (int)strlen(wordp) +1 )
- >= parse_info.bufMaxSize){
- if(realloc_parse_info(strlen(wordp) +1) == False)
+ if ((parse_info.bufsize + (int)strlen(wordp) + 1)
+ >= parse_info.bufMaxSize) {
+ if (realloc_parse_info(strlen(wordp) + 1) == False)
goto err;
}
strcpy(&parse_info.buf[parse_info.bufsize], wordp);
@@ -964,30 +986,32 @@ f_default(str, token, db)
default:
goto err;
}
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return len;
err:
- if (wordp != word) Xfree (wordp);
+ if (wordp != word)
+ Xfree (wordp);
return 0;
}
/************************************************************************/
-#ifdef DEBUG
+#ifdef DEBUG
static void
-PrintDatabase(db)
- Database db;
+PrintDatabase(
+ Database db)
{
Database p = db;
int i = 0, j;
printf("***\n*** BEGIN Database\n***\n");
- while(p){
+ while (p) {
printf("%3d: ", i++);
printf("%s, %s, ", p->category, p->name);
printf("\t[%d: ", p->value_num);
- for(j = 0; j < p->value_num; ++j){
+ for (j = 0; j < p->value_num; ++j) {
printf("%s, ", p->value[j]);
}
printf("]\n");
@@ -998,20 +1022,20 @@ PrintDatabase(db)
#endif
static void
-DestroyDatabase(db)
- Database db;
+DestroyDatabase(
+ Database db)
{
Database p = db;
- while(p){
- if(p->category != NULL){
+ while (p) {
+ if (p->category != NULL) {
Xfree(p->category);
}
- if(p->name != NULL){
+ if (p->name != NULL) {
Xfree(p->name);
}
- if(p->value != (char **)NULL){
- if(*p->value != NULL){
+ if (p->value != (char **)NULL) {
+ if (*p->value != NULL) {
Xfree(*p->value);
}
Xfree((char *)p->value);
@@ -1023,13 +1047,13 @@ DestroyDatabase(db)
}
static int
-CountDatabase(db)
- Database db;
+CountDatabase(
+ Database db)
{
Database p = db;
int cnt = 0;
- while(p){
+ while (p) {
++cnt;
p = p->next;
}
@@ -1037,8 +1061,8 @@ CountDatabase(db)
}
static Database
-CreateDatabase(dbfile)
- char *dbfile;
+CreateDatabase(
+ char *dbfile)
{
Database db = (Database)NULL;
FILE *fd;
@@ -1049,26 +1073,25 @@ CreateDatabase(dbfile)
int error = 0;
fd = _XFopenFile(dbfile, "r");
- if(fd == (FILE *)NULL){
+ if (fd == (FILE *)NULL)
return NULL;
- }
bzero(&line, sizeof(Line));
init_parse_info();
do {
int rc = read_line(fd, &line);
- if(rc < 0){
+ if (rc < 0) {
error = 1;
break;
- }else if(rc == 0){
+ } else if (rc == 0) {
break;
}
p = line.str;
- while(*p){
+ while (*p) {
token = get_token(p);
len = (*token_tbl[token].parse_proc)(p, token, &db);
- if(len < 1){
+ if (len < 1) {
error = 1;
break;
}
@@ -1076,11 +1099,11 @@ CreateDatabase(dbfile)
}
} while (!error);
- if(parse_info.pre_state != S_NULL){
+ if (parse_info.pre_state != S_NULL) {
clear_parse_info();
error = 1;
}
- if(error){
+ if (error) {
#ifdef DEBUG
fprintf(stderr, "database format error at line %d.\n", line.seq);
#endif
@@ -1128,12 +1151,12 @@ static XlcDatabaseList _db_list = (XlcDatabaseList)NULL;
/* This function retrieves XLocale database information. */
/************************************************************************/
void
-_XlcGetResource(lcd, category, class, value, count)
- XLCd lcd;
- char *category;
- char *class;
- char ***value;
- int *count;
+_XlcGetResource(
+ XLCd lcd,
+ const char *category,
+ const char *class,
+ char ***value,
+ int *count)
{
XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
@@ -1147,20 +1170,20 @@ _XlcGetResource(lcd, category, class, value, count)
/* This function retrieves XLocale database information. */
/************************************************************************/
void
-_XlcGetLocaleDataBase(lcd, category, name, value, count)
- XLCd lcd;
- char *category;
- char *name;
- char ***value;
- int *count;
+_XlcGetLocaleDataBase(
+ XLCd lcd,
+ const char *category,
+ const char *name,
+ char ***value,
+ int *count)
{
XlcDatabase lc_db = (XlcDatabase)XLC_PUBLIC(lcd, xlocale_db);
XrmQuark category_q, name_q;
category_q = XrmStringToQuark(category);
name_q = XrmStringToQuark(name);
- for(; lc_db->db; ++lc_db){
- if(category_q == lc_db->category_q && name_q == lc_db->name_q){
+ for (; lc_db->db; ++lc_db) {
+ if (category_q == lc_db->category_q && name_q == lc_db->name_q) {
*value = lc_db->db->value;
*count = lc_db->db->value_num;
return;
@@ -1180,23 +1203,23 @@ _XlcGetLocaleDataBase(lcd, category, name, value, count)
/* remove it from the cache list and free work area. */
/************************************************************************/
void
-_XlcDestroyLocaleDataBase(lcd)
- XLCd lcd;
+_XlcDestroyLocaleDataBase(
+ XLCd lcd)
{
XlcDatabase lc_db = (XlcDatabase)XLC_PUBLIC(lcd, xlocale_db);
XlcDatabaseList p, prev;
- for(p = _db_list, prev = (XlcDatabaseList)NULL; p;
- prev = p, p = p->next){
- if(p->lc_db == lc_db){
- if((-- p->ref_count) < 1){
- if(p->lc_db != (XlcDatabase)NULL){
+ for (p = _db_list, prev = (XlcDatabaseList)NULL; p;
+ prev = p, p = p->next) {
+ if (p->lc_db == lc_db) {
+ if ((-- p->ref_count) < 1) {
+ if (p->lc_db != (XlcDatabase)NULL) {
Xfree((char *)p->lc_db);
}
DestroyDatabase(p->database);
- if(prev == (XlcDatabaseList)NULL){
+ if (prev == (XlcDatabaseList)NULL) {
_db_list = p->next;
- }else{
+ } else {
prev->next = p->next;
}
Xfree((char*)p);
@@ -1214,8 +1237,8 @@ _XlcDestroyLocaleDataBase(lcd)
/* the specified XLCd. */
/************************************************************************/
XPointer
-_XlcCreateLocaleDataBase(lcd)
- XLCd lcd;
+_XlcCreateLocaleDataBase(
+ XLCd lcd)
{
XlcDatabaseList list, new;
Database p, database = (Database)NULL;
@@ -1225,13 +1248,16 @@ _XlcCreateLocaleDataBase(lcd)
int i, n;
name = _XlcFileName(lcd, "locale");
- if(name == NULL){
+ if (name == NULL)
return (XPointer)NULL;
- }
+#ifndef __UNIXOS2__
name_q = XrmStringToQuark(name);
- for(list = _db_list; list; list = list->next){
- if(name_q == list->name_q){
+#else
+ name_q = XrmStringToQuark((char*)__XOS2RedirRoot(name));
+#endif
+ for (list = _db_list; list; list = list->next) {
+ if (name_q == list->name_q) {
list->ref_count++;
Xfree (name);
return XLC_PUBLIC(lcd, xlocale_db) = (XPointer)list->lc_db;
@@ -1239,24 +1265,23 @@ _XlcCreateLocaleDataBase(lcd)
}
database = CreateDatabase(name);
- if(database == (Database)NULL){
+ if (database == (Database)NULL) {
Xfree (name);
return (XPointer)NULL;
}
n = CountDatabase(database);
lc_db = (XlcDatabase)Xmalloc(sizeof(XlcDatabaseRec) * (n + 1));
- if(lc_db == (XlcDatabase)NULL){
+ if (lc_db == (XlcDatabase)NULL)
goto err;
- }
bzero(lc_db, sizeof(XlcDatabaseRec) * (n + 1));
- for(p = database, i = 0; p && i < n; p = p->next, ++i){
+ for (p = database, i = 0; p && i < n; p = p->next, ++i) {
lc_db[i].category_q = XrmStringToQuark(p->category);
lc_db[i].name_q = XrmStringToQuark(p->name);
lc_db[i].db = p;
}
new = (XlcDatabaseList)Xmalloc(sizeof(XlcDatabaseListRec));
- if(new == (XlcDatabaseList)NULL){
+ if (new == (XlcDatabaseList)NULL) {
goto err;
}
new->name_q = name_q;
@@ -1271,7 +1296,7 @@ _XlcCreateLocaleDataBase(lcd)
err:
DestroyDatabase(database);
- if(lc_db != (XlcDatabase)NULL){
+ if (lc_db != (XlcDatabase)NULL) {
Xfree((char *)lc_db);
}
Xfree (name);
diff --git a/src/xlibi18n/lcDynamic.c b/src/xlibi18n/lcDynamic.c
index 64484382..31948320 100644
--- a/src/xlibi18n/lcDynamic.c
+++ b/src/xlibi18n/lcDynamic.c
@@ -32,10 +32,22 @@ from The Open Group.
* Modifier: Takanori Tateno FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/lcDynamic.c,v 1.5 2001/12/14 19:54:10 dawes Exp $ */
+
+/*
+ * A dynamically loaded locale.
+ * Supports: All locale names.
+ * How: Loads $(XLOCALEDIR)/xi18n.so and forwards the request to that library.
+ * Platforms: Only those defining USE_DYNAMIC_LOADER (none known).
+ */
+
#ifdef USE_DYNAMIC_LOADER
#include <stdio.h>
#include <string.h>
+#include <dlfcn.h>
+
#include "Xlibint.h"
+#include "Xlcint.h"
#ifndef XLOCALEDIR
#define XLOCALEDIR "/usr/lib/X11/locale"
@@ -43,18 +55,9 @@ from The Open Group.
#define LCLIBNAME "xi18n.so"
-extern void *dlopen();
-extern void *dlsym();
-extern int dlclose();
-extern char *dlerror();
-
-#define LAZY 1
-#define NOW 2
-#define GLOBAL 0x100
-
XLCd
-_XlcDynamicLoader(name)
- char *name;
+_XlcDynamicLoader(
+ const char *name)
{
char libpath[1024];
XLCdMethods _XlcGenericMethods;
@@ -64,11 +67,11 @@ _XlcDynamicLoader(name)
sprintf(libpath,"%s/%s/%s",
XLOCALEDIR,name,LCLIBNAME);
nlshandler = dlopen(libpath,LAZY);
- _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,
- "genericMethods");
+ _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,"genericMethods");
lcd = _XlcCreateLC(name,_XlcGenericMethods);
-
return lcd;
}
+#else
+typedef int dummy;
#endif /* USE_DYNAMIC_LOADER */
diff --git a/src/xlibi18n/lcFile.c b/src/xlibi18n/lcFile.c
index 164674fc..d94045d7 100644
--- a/src/xlibi18n/lcFile.c
+++ b/src/xlibi18n/lcFile.c
@@ -23,24 +23,30 @@
* SOFTWARE.
*
*/
+/* $XFree86: xc/lib/X11/lcFile.c,v 3.30.2.1 2003/03/11 23:18:49 herrb Exp $ */
+
+#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "Xlibint.h"
#include "XlcPubI.h"
#include <X11/Xos.h>
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
/************************************************************************/
#define iscomment(ch) ((ch) == '#' || (ch) == '\0')
-#if defined(WIN32) || defined(__EMX__) /* || defined(OS2) */
+#if defined(WIN32)
#define isreadable(f) (_XAccessFile(f))
#else
#define isreadable(f) ((access((f), R_OK) != -1) ? 1 : 0)
#endif
+#ifndef __UNIXOS2__
+#define LC_PATHDELIM ':'
+#else
+#define LC_PATHDELIM ';'
+#endif
+
#define XLC_BUFSIZE 256
#ifndef X_NOT_POSIX
@@ -69,27 +75,32 @@ extern char *getenv();
#define NUM_LOCALEDIR 64
+/* Splits a NUL terminated line into constituents, at colons and newline
+ characters. Leading whitespace is removed from constituents. The
+ constituents are stored at argv[0..argsize-1]. The number of stored
+ constituents (<= argsize) is returned. The line is destructively
+ modified. */
static int
-parse_line(line, argv, argsize)
- char *line;
- char **argv;
- int argsize;
+parse_line(
+ char *line,
+ char **argv,
+ int argsize)
{
int argc = 0;
char *p = line;
- while(argc < argsize){
- while(isspace(*p)){
+ while (argc < argsize) {
+ while (isspace(*p)) {
++p;
}
- if(*p == '\0'){
+ if (*p == '\0') {
break;
}
argv[argc++] = p;
- while(*p != ':' && *p != '\n' && *p != '\0'){
+ while (*p != ':' && *p != '\n' && *p != '\0') {
++p;
}
- if(*p == '\0'){
+ if (*p == '\0') {
break;
}
*p++ = '\0';
@@ -98,31 +109,25 @@ parse_line(line, argv, argsize)
return argc;
}
-/* parse the colon separated list in path into argv */
-int
-_XlcParsePath(path, argv, argsize)
- char *path;
- char **argv;
- int argsize;
+/* Splits a colon separated list of directories, and returns the constituent
+ paths (without trailing slash). At most argsize constituents are stored
+ at argv[0..argsize-1]. The number of stored constituents is returned. */
+static int
+_XlcParsePath(
+ char *path,
+ char **argv,
+ int argsize)
{
char *p = path;
- int i, n;
+ int n, i;
-#if 0
- while((p = strchr(p, ':')) != NULL){
- *p = ' '; /* place space on delimter */
- }
-#endif
n = parse_line(path, argv, argsize);
- if(n == 0){
- return 0;
- }
- for(i = 0; i < n; ++i){
+ for (i = 0; i < n; ++i) {
int len;
p = argv[i];
len = strlen(p);
- if(p[len - 1] == '/'){
- /* eliminate slash */
+ if (len > 0 && p[len - 1] == '/') {
+ /* eliminate trailing slash */
p[len - 1] = '\0';
}
}
@@ -134,99 +139,157 @@ _XlcParsePath(path, argv, argsize)
#endif
static void
-xlocaledir(buf, buf_len)
- char *buf;
- int buf_len;
+xlocaledir(
+ char *buf,
+ int buf_len)
{
- char *dir, *p = buf;
+ char *p = buf;
int len = 0;
+#ifndef NO_XLOCALEDIR
+ char *dir;
+ int priv = 1;
+
dir = getenv("XLOCALEDIR");
- if(dir != NULL){
- len = strlen(dir);
- strncpy(p, dir, buf_len);
- if (len < buf_len) {
- p[len++] = ':';
- p += len;
+
+ if (dir) {
+ /*
+ * Only use the user-supplied path if the process isn't priviledged.
+ */
+ if (getuid() == geteuid() && getgid() == getegid()) {
+#if defined(HASSETUGID)
+ priv = issetugid();
+#elif defined(HASGETRESUID)
+ {
+ uid_t ruid, euid, suid;
+ gid_t rgid, egid, sgid;
+ if ((getresuid(&ruid, &euid, &suid) == 0) &&
+ (getresgid(&rgid, &egid, &sgid) == 0))
+ priv = (euid != suid) || (egid != sgid);
+ }
+#else
+ /*
+ * If there are saved ID's the process might still be priviledged
+ * even though the above test succeeded. If issetugid() and
+ * getresgid() aren't available, test this by trying to set
+ * euid to 0.
+ *
+ * Note: this only protects setuid-root clients. It doesn't
+ * protect other setuid or any setgid clients. If this tradeoff
+ * isn't acceptable, set DisableXLocaleDirEnv to YES in host.def.
+ */
+ unsigned int oldeuid;
+ oldeuid = geteuid();
+ if (seteuid(0) != 0) {
+ priv = 0;
+ } else {
+ seteuid(oldeuid);
+ priv = 1;
+ }
+#endif
+ }
+ if (!priv) {
+ len = strlen(dir);
+ strncpy(p, dir, buf_len);
+ if (len < buf_len) {
+ p[len++] = LC_PATHDELIM;
+ p += len;
+ }
}
}
+#endif /* NO_XLOCALEDIR */
+
if (len < buf_len)
- strncpy(p, XLOCALEDIR, buf_len-len);
+#ifndef __UNIXOS2__
+ strncpy(p, XLOCALEDIR, buf_len - len);
+#else
+ strncpy(p,__XOS2RedirRoot(XLOCALEDIR), buf_len - len);
+#endif
buf[buf_len-1] = '\0';
}
-enum { LtoR, RtoL };
+/* Mapping direction */
+typedef enum {
+ LtoR, /* Map first field to second field */
+ RtoL /* Map second field to first field */
+} MapDirection;
static char *
-resolve_name(lc_name, file_name, direction)
- char *lc_name;
- char *file_name;
- int direction; /* mapping direction */
+resolve_name(
+ const char *lc_name,
+ char *file_name,
+ MapDirection direction)
{
FILE *fp;
char buf[XLC_BUFSIZE], *name = NULL;
fp = _XFopenFile (file_name, "r");
- if(fp == (FILE *)NULL){
+ if (fp == NULL)
return NULL;
- }
- while(fgets(buf, XLC_BUFSIZE, fp) != NULL){
+ while (fgets(buf, XLC_BUFSIZE, fp) != NULL) {
char *p = buf;
int n;
char *args[2], *from, *to;
- while(isspace(*p)){
+#ifdef __UNIXOS2__ /* Take out CR under OS/2 */
+ int len;
+
+ len = strlen(p);
+ if (len > 1) {
+ if (*(p+len-2) == '\r' && *(p+len-1) == '\n') {
+ *(p+len-2) = '\n';
+ *(p+len-1) = '\0';
+ }
+ }
+#endif
+ while (isspace(*p)) {
++p;
}
- if(iscomment(*p)){
+ if (iscomment(*p)) {
continue;
}
n = parse_line(p, args, 2); /* get first 2 fields */
- if(n != 2){
+ if (n != 2) {
continue;
}
- if(direction == LtoR){
+ if (direction == LtoR) {
from = args[0], to = args[1]; /* left to right */
- }else{
+ } else {
from = args[1], to = args[0]; /* right to left */
}
- if(! strcmp(from, lc_name)){
+ if (! strcmp(from, lc_name)) {
name = Xmalloc(strlen(to) + 1);
- if(name != NULL){
+ if (name != NULL) {
strcpy(name, to);
}
break;
}
}
- if(fp != (FILE *)NULL){
- fclose(fp);
- }
+ fclose(fp);
return name;
}
-/*
-#define isupper(ch) ('A' <= (ch) && (ch) <= 'Z')
-#define tolower(ch) ((ch) - 'A' + 'a')
-*/
+#define c_tolower(ch) ((ch) >= 'A' && (ch) <= 'Z' ? (ch) - 'A' + 'a' : (ch))
+
static char *
-lowercase(dst, src)
- char *dst;
- char *src;
+lowercase(
+ char *dst,
+ const char *src)
{
- char *s, *t;
+ const char *s;
+ char *t;
- for(s = src, t = dst; *s; ++s, ++t){
- *t = isupper(*s) ? tolower(*s) : *s;
- }
+ for (s = src, t = dst; *s; ++s, ++t)
+ *t = c_tolower(*s);
*t = '\0';
return dst;
}
/************************************************************************/
char *
-_XlcFileName(lcd, category)
- XLCd lcd;
- char *category;
+_XlcFileName(
+ XLCd lcd,
+ const char *category)
{
char *siname;
char cat[XLC_BUFSIZE], dir[XLC_BUFSIZE];
@@ -234,16 +297,15 @@ _XlcFileName(lcd, category)
char *args[NUM_LOCALEDIR];
char *file_name = NULL;
- if(lcd == (XLCd)NULL){
+ if (lcd == (XLCd)NULL)
return NULL;
- }
siname = XLC_PUBLIC(lcd, siname);
lowercase(cat, category);
xlocaledir(dir,XLC_BUFSIZE);
n = _XlcParsePath(dir, args, NUM_LOCALEDIR);
- for(i = 0; i < n; ++i){
+ for (i = 0; i < n; ++i) {
char buf[PATH_MAX], *name;
name = NULL;
@@ -252,20 +314,20 @@ _XlcFileName(lcd, category)
sprintf(buf, "%s/%s.dir", args[i], cat);
name = resolve_name(siname, buf, RtoL);
}
- if(name == NULL){
+ if (name == NULL) {
continue;
}
- if(*name == '/'){
+ if (*name == '/') {
/* supposed to be absolute path name */
file_name = name;
- }else{
+ } else {
file_name = Xmalloc(2 + (args[i] ? strlen (args[i]) : 0) +
(name ? strlen (name) : 0));
if (file_name != NULL)
sprintf(file_name, "%s/%s", args[i], name);
Xfree(name);
}
- if(isreadable(file_name)){
+ if (isreadable(file_name)) {
break;
}
Xfree(file_name);
@@ -281,25 +343,26 @@ _XlcFileName(lcd, category)
#endif
int
-_XlcResolveLocaleName(lc_name, pub)
- char* lc_name;
- XLCdPublicPart* pub;
+_XlcResolveLocaleName(
+ const char* lc_name,
+ XLCdPublicPart* pub)
{
char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
char *dst;
int i, n, sinamelen;
char *args[NUM_LOCALEDIR];
- static char locale_alias[] = LOCALE_ALIAS;
+ static const char locale_alias[] = LOCALE_ALIAS;
+ char *tmp_siname;
xlocaledir (dir, PATH_MAX);
n = _XlcParsePath(dir, args, NUM_LOCALEDIR);
- for(i = 0; i < n; ++i){
+ for (i = 0; i < n; ++i) {
if ((2 + (args[i] ? strlen (args[i]) : 0) +
strlen (locale_alias)) < PATH_MAX) {
sprintf (buf, "%s/%s", args[i], locale_alias);
name = resolve_name (lc_name, buf, LtoR);
}
- if(name != NULL){
+ if (name != NULL) {
break;
}
}
@@ -324,7 +387,11 @@ _XlcResolveLocaleName(lc_name, pub)
* be "en_US.ISO8859-1", "en_US.utf8", "ru_RU.KOI-8", or ja_JP.SJIS,
* although it could be ja.SJIS too.
*/
- pub->siname = Xrealloc (pub->siname, 2 * (sinamelen + 1));
+ tmp_siname = Xrealloc (pub->siname, 2 * (sinamelen + 1));
+ if (tmp_siname == NULL) {
+ return 0;
+ }
+ pub->siname = tmp_siname;
/* language */
dst = &pub->siname[sinamelen + 1];
@@ -355,63 +422,82 @@ _XlcResolveI18NPath(buf, buf_len)
char *buf;
int buf_len;
{
- if(buf != NULL){
+ if (buf != NULL) {
xlocaledir(buf, buf_len);
}
return 1;
}
char *
-_XlcLocaleDirName(dir_name, lc_name)
+_XlcLocaleDirName(dir_name, dir_len, lc_name)
char *dir_name;
+ size_t dir_len;
char *lc_name;
{
- char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
- char *dst;
- int i, n, sinamelen;
- char *args[NUM_LOCALEDIR];
- static char locale_alias[] = LOCALE_ALIAS;
- char *target_name = (char*)0;
- char *target_dir = (char*)0;
-
- xlocaledir (dir, PATH_MAX);
- n = _XlcParsePath(dir, args, 256);
- for (i = 0; i < n; ++i){
- if ((2 + (args[i] ? strlen(args[i]) : 0) +
- strlen(locale_alias)) < PATH_MAX) {
- sprintf (buf, "%s/%s", args[i], locale_alias);
- name = resolve_name(lc_name, buf, LtoR);
+ char dir[PATH_MAX], buf[PATH_MAX], *name = NULL;
+ int i, n;
+ char *args[NUM_LOCALEDIR];
+ static char locale_alias[] = LOCALE_ALIAS;
+ char *target_name = (char*)0;
+ char *target_dir = (char*)0;
+
+ xlocaledir (dir, PATH_MAX);
+ n = _XlcParsePath(dir, args, 256);
+ for (i = 0; i < n; ++i) {
+
+ if ((2 + (args[i] ? strlen(args[i]) : 0) +
+ strlen(locale_alias)) < PATH_MAX) {
+ sprintf (buf, "%s/%s", args[i], locale_alias);
+ name = resolve_name(lc_name, buf, LtoR);
+ }
+
+ /* If name is not an alias, use lc_name for locale.dir search */
+ if (name == NULL)
+ name = lc_name;
+
+ /* look at locale.dir */
+
+ target_dir = args[i];
+ if (!target_dir) {
+ /* something wrong */
+ if (name != lc_name)
+ Xfree(name);
+ continue;
+ }
+ if ((1 + (target_dir ? strlen (target_dir) : 0) +
+ strlen("locale.dir")) < PATH_MAX) {
+ sprintf(buf, "%s/locale.dir", target_dir);
+ target_name = resolve_name(name, buf, RtoL);
+ }
+ if (name != lc_name)
+ Xfree(name);
+ if (target_name != NULL) {
+ char *p = 0;
+ if ((p = strstr(target_name, "/XLC_LOCALE"))) {
+ *p = '\0';
+ break;
+ }
+ Xfree(target_name);
+ target_name = NULL;
+ }
+ name = NULL;
}
- if (name != NULL){
- /* look at locale.dir */
- const char *cat = "locale";
-
- target_dir = args[i];
- if (!target_dir) {
- /* something wrong */
- continue;
- }
- if ((5 + (target_dir ? strlen (target_dir) : 0) +
- (cat ? strlen(cat) : 0)) < PATH_MAX) {
- sprintf(buf, "%s/%s.dir", target_dir, cat);
- target_name = resolve_name(name, buf, RtoL);
- }
- if (target_name != NULL) {
- char *p = 0;
- if (p = strstr(target_name, "/XLC_LOCALE")) {
- *p = '\0';
- break;
- }
- }
+ if (target_name == NULL) {
+ /* vendor locale name == Xlocale name, no expansion of alias */
+ target_dir = args[0];
+ target_name = lc_name;
+ }
+ /* snprintf(dir_name, dir_len, "%s/%", target_dir, target_name); */
+ strncpy(dir_name, target_dir, dir_len - 1);
+ if (strlen(target_dir) >= dir_len - 1) {
+ dir_name[dir_len - 1] = '\0';
+ } else {
+ strcat(dir_name, "/");
+ strncat(dir_name, target_name, dir_len - strlen(dir_name) - 1);
+ if (strlen(target_name) >= dir_len - strlen(dir_name) - 1)
+ dir_name[dir_len - 1] = '\0';
}
- }
- if (target_name == NULL) {
- /* vendor locale name == Xlocale name, no expansion of alias */
- target_dir = args[0];
- target_name = lc_name;
- }
- strcpy(dir_name, target_dir);
- strcat(dir_name, "/");
- strcat(dir_name, target_name);
- return dir_name;
+ if (target_name != lc_name)
+ Xfree(target_name);
+ return dir_name;
}
diff --git a/src/xlibi18n/lcGeneric.c b/src/xlibi18n/lcGeneric.c
index 48261139..06d370d8 100644
--- a/src/xlibi18n/lcGeneric.c
+++ b/src/xlibi18n/lcGeneric.c
@@ -28,14 +28,15 @@
* This is source code modified by FUJITSU LIMITED under the Joint
* Development Agreement for the CDE/Motif PST.
*/
+/* $XFree86: xc/lib/X11/lcGeneric.c,v 3.17 2003/02/03 22:11:58 paulo Exp $ */
#include <stdio.h>
#include "Xlibint.h"
#include "XlcGeneric.h"
-static XLCd create();
-static Bool initialize();
-static void destroy();
+static XLCd create (const char *name, XLCdMethods methods);
+static Bool initialize (XLCd lcd);
+static void destroy (XLCd lcd);
static XLCdPublicMethodsRec genericMethods = {
{ NULL }, /* use default methods */
@@ -51,9 +52,9 @@ static XLCdPublicMethodsRec genericMethods = {
XLCdMethods _XlcGenericMethods = (XLCdMethods) &genericMethods;
static XLCd
-create(name, methods)
- char *name;
- XLCdMethods methods;
+create(
+ const char *name,
+ XLCdMethods methods)
{
XLCd lcd;
XLCdPublicMethods new;
@@ -71,7 +72,7 @@ create(name, methods)
new = (XLCdPublicMethods) Xmalloc(sizeof(XLCdPublicMethodsRec));
if (new == NULL)
goto err;
- *new = *((XLCdPublicMethods) methods);
+ memcpy(new,methods,sizeof(XLCdPublicMethodsRec));
lcd->methods = (XLCdMethods) new;
return lcd;
@@ -82,9 +83,9 @@ err:
}
static Bool
-string_to_encoding(str, encoding)
- char *str;
- char *encoding;
+string_to_encoding(
+ const char *str,
+ char *encoding)
{
char *next;
long value;
@@ -117,18 +118,18 @@ string_to_encoding(str, encoding)
}
static Bool
-string_to_ulong(str, value)
-char *str;
-unsigned long *value;
+string_to_ulong(
+ const char *str,
+ unsigned long *value)
{
- char *tmp1 = str;
- int base;
+ const char *tmp1 = str;
+ int base;
- if(*tmp1++ != '\\'){
+ if (*tmp1++ != '\\') {
tmp1--;
base = 10;
- }else{
- switch(*tmp1++){
+ } else {
+ switch (*tmp1++) {
case 'x':
base = 16;
break;
@@ -142,15 +143,15 @@ unsigned long *value;
return(False);
}
}
- *value = (unsigned) strtol(tmp1, NULL, base);
+ *value = (unsigned long) strtol(tmp1, NULL, base);
return(True);
}
static Bool
-add_charset(codeset, charset)
- CodeSet codeset;
- XlcCharSet charset;
+add_charset(
+ CodeSet codeset,
+ XlcCharSet charset)
{
XlcCharSet *new_list;
int num;
@@ -172,8 +173,8 @@ add_charset(codeset, charset)
}
static CodeSet
-add_codeset(gen)
- XLCdGenericPart *gen;
+add_codeset(
+ XLCdGenericPart *gen)
{
CodeSet new, *new_list;
int num;
@@ -205,11 +206,11 @@ err:
}
static Bool
-add_parse_list(gen, type, encoding, codeset)
- XLCdGenericPart *gen;
- EncodingType type;
- char *encoding;
- CodeSet codeset;
+add_parse_list(
+ XLCdGenericPart *gen,
+ EncodingType type,
+ const char *encoding,
+ CodeSet codeset)
{
ParseInfo new, *new_list;
char *str;
@@ -270,8 +271,8 @@ err:
}
static void
-free_charset(lcd)
- XLCd lcd;
+free_charset(
+ XLCd lcd)
{
XLCdGenericPart *gen = XLC_GENERIC_PART(lcd);
ParseInfo *parse_info;
@@ -279,7 +280,7 @@ free_charset(lcd)
if (gen->mb_parse_table)
Xfree(gen->mb_parse_table);
- if ((num = gen->mb_parse_list_num)) {
+ if ((num = gen->mb_parse_list_num) > 0) {
for (parse_info = gen->mb_parse_list; num-- > 0; parse_info++) {
if ((*parse_info)->encoding)
Xfree((*parse_info)->encoding);
@@ -288,23 +289,28 @@ free_charset(lcd)
Xfree(gen->mb_parse_list);
}
- if ((num = gen->codeset_num))
+ if ((num = gen->codeset_num) > 0)
Xfree(gen->codeset_list);
}
+
/* For VW/UDC */
#define FORWARD (unsigned long)'+'
#define BACKWARD (unsigned long)'-'
-static char *getscope(str,scp)
-char *str;
-FontScope scp;
+static const char *
+getscope(
+ const char *str,
+ FontScope scp)
{
- char* next;
- unsigned long start=0,end=0,dest=0,shift=0,direction=0;
- sscanf(str,"[\\x%lx,\\x%lx]->\\x%lx", &start, &end,&dest);
- if( dest ){
- if(dest >= start ){
+ unsigned long start = 0;
+ unsigned long end = 0;
+ unsigned long dest = 0;
+ unsigned long shift = 0;
+ unsigned long direction = 0;
+ sscanf(str,"[\\x%lx,\\x%lx]->\\x%lx", &start, &end, &dest);
+ if (dest) {
+ if (dest >= start) {
shift = dest - start;
direction = FORWARD ;
} else {
@@ -318,115 +324,119 @@ FontScope scp;
scp->shift_direction
= direction ;
/* .......... */
- while(*str){
- if(*str == ',' && *(str+1) == '['){
+ while (*str) {
+ if (*str == ',' && *(str+1) == '[')
break;
- }
str++;
}
- next = str+1 ;
- return(next);
+ return str+1;
}
-static int count_scopemap(str)
-char *str;
+static int
+count_scopemap(
+ const char *str)
{
- char *ptr;
+ const char *ptr;
int num=0;
- for(ptr=str;*ptr;ptr++){
- if(*ptr == ']'){
- num ++;
+ for (ptr=str; *ptr; ptr++) {
+ if (*ptr == ']') {
+ num++;
}
}
- return(num);
+ return num;
}
-FontScope _XlcParse_scopemaps(str,size)
-char *str;
-int *size;
+FontScope
+_XlcParse_scopemaps(
+ const char *str,
+ int *size)
{
- int num=0,i;
- FontScope scope,sc_ptr;
- char *str_sc;
- num = count_scopemap(str);
- scope = (FontScope )Xmalloc(num * sizeof(FontScopeRec));
- if(scope == NULL) {
- return (NULL);
- }
- for (i=0,str_sc=str,sc_ptr=scope;
- i < num; i++,sc_ptr++){
- str_sc = getscope(str_sc,sc_ptr);
- }
- *size = num;
- return (scope);
+ int num=0,i;
+ FontScope scope,sc_ptr;
+ const char *str_sc;
+
+ num = count_scopemap(str);
+ scope = (FontScope) Xmalloc(num * sizeof(FontScopeRec));
+ if (scope == NULL)
+ return NULL;
+
+ for (i=0, str_sc=str, sc_ptr=scope; i < num; i++, sc_ptr++) {
+ str_sc = getscope(str_sc, sc_ptr);
+ }
+ *size = num;
+ return scope;
}
-void _XlcDbg_printValue(str,value,num)
-char *str;
-char **value;
-int num;
+void
+_XlcDbg_printValue(
+ const char *str,
+ char **value,
+ int num)
{
/*
int i;
- for(i=0;i<num;i++){
- fprintf(stderr,"%s value[%d] = %s\n",str,i,value[i]);
- }
+ for (i = 0; i < num; i++)
+ fprintf(stderr, "%s value[%d] = %s\n", str, i, value[i]);
*/
}
-static void dmpscope(name,sc,num)
-char* name;
-FontScope sc;
-int num;
+static void
+dmpscope(
+ const char* name,
+ FontScope sc,
+ int num)
{
/*
int i;
- fprintf(stderr,"dmpscope %s\n",name);
- for(i=0;i<num;i++){
+ fprintf(stderr, "dmpscope %s\n", name);
+ for (i=0; i<num; i++)
fprintf(stderr,"%x %x %x %x \n",
sc[i].start,
sc[i].end,
sc[i].shift,
sc[i].shift_direction);
- }
- fprintf(stderr,"dmpscope end\n");
+ fprintf(stderr, "dmpscope end\n");
*/
}
-static XlcCharSet srch_charset_define(name,new)
-char *name;
-int *new;
+static XlcCharSet
+srch_charset_define(
+ const char *name,
+ int *new)
{
- XlcCharSet charset = NULL;
+ XlcCharSet charset;
+
*new = 0;
charset = _XlcGetCharSet(name);
if (charset == NULL &&
(charset = _XlcCreateDefaultCharSet(name, ""))) {
_XlcAddCharSet(charset);
*new = 1;
+ charset->source = CSsrcXLC;
}
- return(charset);
+ return charset;
}
-static void read_charset_define(lcd,gen)
-XLCd lcd;
-XLCdGenericPart *gen;
+static void
+read_charset_define(
+ XLCd lcd,
+ XLCdGenericPart *gen)
{
- int i=0;
- char csd[16],cset_name[256];
+ int i;
+ char csd[16], cset_name[256];
char name[BUFSIZ];
XlcCharSet charsetd;
char **value;
- int num,new;
+ int num, new;
XlcSide side = XlcUnknown;
char *tmp;
- for(i=0;;i++){ /* loop start */
+ for (i=0; ; i++) { /* loop start */
charsetd = 0;
sprintf(csd, "csd%d", i);
- /* charset_name */
- sprintf(name, "%s.%s", csd , "charset_name");
+ /* charset_name */
+ sprintf(name, "%s.%s", csd, "charset_name");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
_XlcDbg_printValue(name,value,num);
if (num > 0) {
@@ -437,108 +447,102 @@ XLCdGenericPart *gen;
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
- if( !_XlcNCompareISOLatin1(value[0], "none", 4) ){
- side = XlcNONE ;
- strcat(cset_name,":none");
- } else
- if( !_XlcNCompareISOLatin1(value[0], "GL", 2) ){
- side = XlcGL ;
+ if (!_XlcNCompareISOLatin1(value[0], "none", 4)) {
+ side = XlcGLGR;
+ } else if (!_XlcNCompareISOLatin1(value[0], "GL", 2)) {
+ side = XlcGL;
strcat(cset_name,":GL");
} else {
- side = XlcGR ;
+ side = XlcGR;
strcat(cset_name,":GR");
}
if (charsetd == NULL &&
(charsetd = srch_charset_define(cset_name,&new)) == NULL)
- return ;
+ return;
}
} else {
- if(i == 0){
- continue ;
- } else {
- break ;
- }
+ if (i == 0)
+ continue;
+ else
+ break;
}
- if(new){
+ if (new) {
tmp = (char *)Xmalloc(strlen(cset_name)+1);
- if(tmp == NULL){
- return ;
- }
+ if (tmp == NULL)
+ return;
strcpy(tmp,cset_name);
charsetd->name = tmp;
}
/* side */
- charsetd->side = side ;
+ charsetd->side = side ;
/* length */
- sprintf(name, "%s.%s", csd , "length");
+ sprintf(name, "%s.%s", csd, "length");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
charsetd->char_size = atoi(value[0]);
}
/* gc_number */
- sprintf(name, "%s.%s", csd , "gc_number");
+ sprintf(name, "%s.%s", csd, "gc_number");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
charsetd->set_size = atoi(value[0]);
}
/* string_encoding */
- sprintf(name, "%s.%s", csd , "string_encoding");
+ sprintf(name, "%s.%s", csd, "string_encoding");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
- if(!strcmp("False",value[0])){
+ if (!strcmp("False",value[0])) {
charsetd->string_encoding = False;
} else {
charsetd->string_encoding = True;
}
}
/* sequence */
- sprintf(name, "%s.%s", csd , "sequence");
+ sprintf(name, "%s.%s", csd, "sequence");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
/*
- if(charsetd->ct_sequence){
+ if (charsetd->ct_sequence) {
Xfree(charsetd->ct_sequence);
}
*/
tmp = (char *)Xmalloc(strlen(value[0])+1);
- if(tmp == NULL){
+ if (tmp == NULL)
return;
- }
charsetd->ct_sequence = tmp;
string_to_encoding(value[0],tmp);
}
/* encoding_name */
- sprintf(name, "%s.%s", csd , "encoding_name");
+ sprintf(name, "%s.%s", csd, "encoding_name");
_XlcGetResource(lcd, "XLC_CHARSET_DEFINE", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
/*
- if(charsetd->encoding_name){
+ if (charsetd->encoding_name) {
Xfree(charsetd->encoding_name);
}
*/
- tmp = (char *)Xmalloc(strlen(value[0]+1));
+ tmp = (char *)Xmalloc(strlen(value[0])+1);
strcpy(tmp,value[0]);
charsetd->encoding_name = tmp;
- charsetd->xrm_encoding_name =
- XrmStringToQuark(tmp);
+ charsetd->xrm_encoding_name = XrmStringToQuark(tmp);
}
+ _XlcAddCT(charsetd->name, charsetd->ct_sequence);
}
-
}
-SegConv
-add_conversion(gen)
-XLCdGenericPart *gen;
+static SegConv
+add_conversion(
+ XLCdGenericPart *gen)
{
SegConv new_list;
int num;
- if ((num = gen->segment_conv_num)){
+ if ((num = gen->segment_conv_num) > 0) {
new_list = (SegConv) Xrealloc(gen->segment_conv,
(num + 1) * sizeof(SegConvRec));
} else {
@@ -546,102 +550,83 @@ XLCdGenericPart *gen;
}
if (new_list == NULL)
- return False;
+ return NULL;
gen->segment_conv = new_list;
gen->segment_conv_num = num + 1;
- return (&new_list[num]);
+ return &new_list[num];
}
-static void read_segmentconversion(lcd,gen)
-XLCd lcd;
-XLCdGenericPart *gen;
+
+static void
+read_segmentconversion(
+ XLCd lcd,
+ XLCdGenericPart *gen)
{
- int i=0;
+ int i;
char conv[16];
char name[BUFSIZ];
char **value;
int num,new;
SegConv conversion;
- for(i=0 ; ; i++){ /* loop start */
+ for (i=0 ; ; i++) { /* loop start */
conversion = 0;
sprintf(conv, "conv%d", i);
/* length */
- sprintf(name, "%s.%s", conv , "length");
+ sprintf(name, "%s.%s", conv, "length");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
if (conversion == NULL &&
(conversion = add_conversion(gen)) == NULL) {
- return ;
+ return;
}
_XlcDbg_printValue(name,value,num);
} else {
- if(i == 0){
+ if (i == 0)
continue;
- } else {
- break ;
- }
+ else
+ break;
}
conversion->length = atoi(value[0]);
/* source_encoding */
- sprintf(name, "%s.%s", conv , "source_encoding");
+ sprintf(name, "%s.%s", conv, "source_encoding");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
char *tmp;
_XlcDbg_printValue(name,value,num);
tmp = (char *)Xmalloc(strlen(value[0])+1);
- if(tmp == NULL){
+ if (tmp == NULL)
return;
- }
strcpy(tmp,value[0]);
conversion->source_encoding = tmp;
conversion->source = srch_charset_define(tmp,&new);
- if(new){
- tmp = (char *)Xmalloc(strlen(conversion->source_encoding)+1);
- if(tmp == NULL){
- return ;
- }
- strcpy(tmp,conversion->source_encoding);
- conversion->source->name = tmp;
- }
}
/* destination_encoding */
- sprintf(name, "%s.%s", conv , "destination_encoding");
+ sprintf(name, "%s.%s", conv, "destination_encoding");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
char *tmp;
_XlcDbg_printValue(name,value,num);
tmp = (char *)Xmalloc(strlen(value[0])+1);
- if(tmp == NULL){
+ if (tmp == NULL)
return;
- }
strcpy(tmp,value[0]);
conversion->destination_encoding = tmp;
conversion->dest = srch_charset_define(tmp,&new);
- if(new){
- tmp = (char *)Xmalloc(
- strlen(conversion->destination_encoding)+1);
- if(tmp == NULL){
- return ;
- }
- strcpy(tmp,conversion->destination_encoding);
- conversion->dest->name = tmp;
- }
}
/* range */
- sprintf(name, "%s.%s", conv , "range");
+ sprintf(name, "%s.%s", conv, "range");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
sscanf(value[0],"\\x%lx,\\x%lx",
- &(conversion->range.start),
- &(conversion->range.end));
+ &(conversion->range.start), &(conversion->range.end));
}
/* conversion */
- sprintf(name, "%s.%s", conv , "conversion");
+ sprintf(name, "%s.%s", conv, "conversion");
_XlcGetResource(lcd, "XLC_SEGMENTCONVERSION", name, &value, &num);
if (num > 0) {
_XlcDbg_printValue(name,value,num);
@@ -651,9 +636,10 @@ XLCdGenericPart *gen;
} /* loop end */
}
-static ExtdSegment create_ctextseg(value,num)
-char **value;
-int num;
+static ExtdSegment
+create_ctextseg(
+ char **value,
+ int num)
{
ExtdSegment ret;
char* ptr;
@@ -661,69 +647,58 @@ int num;
int i,new;
FontScope scope;
ret = (ExtdSegment)Xmalloc(sizeof(ExtdSegmentRec));
- if(ret == NULL){
+ if (ret == NULL)
+ return NULL;
+ ret->name = (char *)Xmalloc(strlen(value[0]) + 1);
+ if (ret->name == NULL) {
+ Xfree (ret);
return NULL;
}
- if(strchr(value[0],':')){
- ret->name = (char *)Xmalloc(strlen(value[0])+1);
- if(ret->name == NULL){
- Xfree (ret);
- return NULL;
- }
- strcpy(ret->name,value[0]);
+ strcpy(ret->name,value[0]);
+ cset_name = (char*) Xmalloc (strlen(ret->name) + 1);
+ if (cset_name == NULL) {
+ Xfree (ret->name);
+ Xfree (ret);
+ return NULL;
+ }
+ if (strchr(value[0],':')) {
ptr = strchr(ret->name,':');
*ptr = '\0';
ptr++;
- cset_name = (char*) Xmalloc (strlen (ret->name) + 6);
- if (cset_name == NULL) {
- Xfree (ret->name);
- Xfree (ret);
- return NULL;
- }
- if( !_XlcNCompareISOLatin1(ptr, "none", 4) ){
- ret->side = XlcNONE ;
- sprintf(cset_name,"%s:%s",ret->name,"none");
- } else
- if( !_XlcNCompareISOLatin1(ptr, "GL", 2) ){
- ret->side = XlcGL ;
+ if (!_XlcNCompareISOLatin1(ptr, "GL", 2)) {
+ ret->side = XlcGL;
sprintf(cset_name,"%s:%s",ret->name,"GL");
} else {
- ret->side = XlcGR ;
+ ret->side = XlcGR;
sprintf(cset_name,"%s:%s",ret->name,"GR");
}
} else {
- ret->name = (char *)Xmalloc(strlen(value[0])+1);
- if(ret->name == NULL){
- Xfree (ret);
- return NULL;
- }
- strcpy(ret->name,value[0]);
+ ret->side = XlcGLGR;
+ strcpy(cset_name,ret->name);
}
ret->area = (FontScope)Xmalloc((num - 1)*sizeof(FontScopeRec));
- if(ret->area == NULL){
+ if (ret->area == NULL) {
+ Xfree (cset_name);
Xfree (ret->name);
Xfree (ret);
return NULL;
}
- ret->area_num = num - 1;
+ ret->area_num = num - 1;
scope = ret->area ;
- for(i=1;i<num;i++){
+ for (i = 1; i < num; i++) {
sscanf(value[i],"\\x%lx,\\x%lx",
- &scope[i-1].start,&scope[i-1].end);
+ &scope[i-1].start, &scope[i-1].end);
}
ret->charset = srch_charset_define(cset_name,&new);
- if (new)
- ret->charset->name = cset_name;
- else
- Xfree (cset_name);
+ Xfree (cset_name);
return ret;
}
/* For VW/UDC end */
static Bool
-load_generic(lcd)
- XLCd lcd;
+load_generic(
+ XLCd lcd)
{
XLCdGenericPart *gen = XLC_GENERIC_PART(lcd);
char **value;
@@ -731,6 +706,7 @@ load_generic(lcd)
unsigned long l;
int i;
int M,ii;
+ XlcCharSet charset;
gen->codeset_num = 0;
@@ -747,7 +723,6 @@ load_generic(lcd)
gen->wc_shift_bits = atoi(value[0]);
if (gen->wc_shift_bits < 1)
gen->wc_shift_bits = 8;
-#ifndef X_NOT_STDC_ENV
/***** use_stdc_env *****/
_XlcGetResource(lcd, "XLC_XLOCALE", "use_stdc_env", &value, &num);
if (num > 0 && !_XlcCompareISOLatin1(value[0], "True"))
@@ -760,7 +735,6 @@ load_generic(lcd)
gen->force_convert_to_mb = True;
else
gen->force_convert_to_mb = False;
-#endif
for (i = 0; ; i++) {
CodeSetRec *codeset = NULL;
@@ -779,13 +753,12 @@ load_generic(lcd)
goto err;
/* 3.4.1 side */
- if( !_XlcNCompareISOLatin1(value[0], "none", 4) ){
- codeset->side = XlcNONE ;
- } else
- if( !_XlcNCompareISOLatin1(value[0], "GL", 2) ){
- codeset->side = XlcGL ;
+ if (!_XlcNCompareISOLatin1(value[0], "none", 4)) {
+ codeset->side = XlcNONE;
+ } else if (!_XlcNCompareISOLatin1(value[0], "GL", 2)) {
+ codeset->side = XlcGL;
} else {
- codeset->side = XlcGR ;
+ codeset->side = XlcGR;
}
tmp = strrchr(value[0], ':');
@@ -813,13 +786,13 @@ load_generic(lcd)
_XlcGetResource(lcd, "XLC_XLOCALE", name, &value, &num);
if (num > 0) {
static struct {
- char *str;
+ const char *str;
int type;
} shifts[] = {
{"<SS>", E_SS},
{"<LSL>", E_LSL},
{"<LSR>", E_LSR},
- 0
+ {0}
};
int j;
@@ -859,7 +832,6 @@ load_generic(lcd)
sprintf(name, "%s.%s", cs, "ct_encoding");
_XlcGetResource(lcd, "XLC_XLOCALE", name, &value, &num);
if (num > 0) {
- XlcCharSet charset;
char *encoding;
if (codeset == NULL && (codeset = add_codeset(gen)) == NULL)
@@ -895,33 +867,33 @@ load_generic(lcd)
codeset->cs_num = i;
/* For VW/UDC */
/***** 3.4.2 byteM (1 <= M <= length)*****/
- for(M=1; M-1 < codeset->length; M++){
+ for (M=1; M-1 < codeset->length; M++) {
long start,end;
ByteInfo tmpb;
sprintf(name,"%s.%s%d",cs,"byte",M);
_XlcGetResource(lcd, "XLC_XLOCALE", name, &value, &num);
- if( M == 1){
- if(num < 1) {
- codeset->byteM = NULL ;
+ if (M == 1) {
+ if (num < 1) {
+ codeset->byteM = NULL;
break ;
}
codeset->byteM =
(ByteInfoListRec *)Xmalloc(
(codeset->length)*sizeof(ByteInfoListRec));
- if(codeset->byteM == NULL){
+ if (codeset->byteM == NULL) {
goto err;
}
}
- if(num > 0){
+ if (num > 0) {
_XlcDbg_printValue(name,value,num);
(codeset->byteM)[M-1].M = M;
(codeset->byteM)[M-1].byteinfo_num = num;
(codeset->byteM)[M-1].byteinfo =
(ByteInfo)Xmalloc( num * sizeof(ByteInfoRec));
- for(ii = 0 ; ii < num ; ii++){
+ for (ii = 0 ; ii < num ; ii++) {
tmpb = (codeset->byteM)[M-1].byteinfo ;
/* default 0x00 - 0xff */
sscanf(value[ii],"\\x%lx,\\x%lx",&start,&end);
@@ -942,7 +914,7 @@ load_generic(lcd)
codeset->mbconv->convlist =
_XlcParse_scopemaps(value[0],&(codeset->mbconv->conv_num));
dmpscope("mb_conv",codeset->mbconv->convlist,
- codeset->mbconv->conv_num);
+ codeset->mbconv->conv_num);
/* [\x%x,\x%x]->\x%x,... */
}
/***** codeset.ct_conversion *****/
@@ -954,7 +926,7 @@ load_generic(lcd)
codeset->ctconv->convlist =
_XlcParse_scopemaps(value[0],&(codeset->ctconv->conv_num));
dmpscope("ctconv",codeset->ctconv->convlist,
- codeset->ctconv->conv_num);
+ codeset->ctconv->conv_num);
/* [\x%x,\x%x]->\x%x,... */
}
/***** codeset.ct_conversion_file *****/
@@ -979,6 +951,34 @@ load_generic(lcd)
read_charset_define(lcd,gen); /* For VW/UDC */
read_segmentconversion(lcd,gen); /* For VW/UDC */
+ if (gen->initial_state_GL == NULL) {
+ CodeSetRec *codeset;
+ for (i = 0; i < gen->codeset_num; i++) {
+ codeset = gen->codeset_list[i];
+ if (codeset->side == XlcGL)
+ gen->initial_state_GL = codeset;
+ }
+ }
+
+ if (gen->initial_state_GR == NULL) {
+ CodeSetRec *codeset;
+ for (i = 0; i < gen->codeset_num; i++) {
+ codeset = gen->codeset_list[i];
+ if (codeset->side == XlcGR)
+ gen->initial_state_GR = codeset;
+ }
+ }
+
+ for (i = 0; i < gen->codeset_num; i++) {
+ CodeSetRec *codeset = gen->codeset_list[i];
+ for (ii = 0; ii < codeset->num_charsets; ii++) {
+ charset = codeset->charset_list[ii];
+ if (! strcmp(charset->encoding_name, "ISO8859-1"))
+ charset->string_encoding = True;
+ if ( charset->string_encoding )
+ codeset->string_encoding = True;
+ }
+ }
return True;
err:
@@ -1020,25 +1020,26 @@ initialize(lcd)
if (initialize_core(lcd) == False)
return False;
#endif
-
- if(load_generic(lcd) == False)
+
+ if (load_generic(lcd) == False)
return False;
return True;
}
+
/* VW/UDC start 95.01.08 */
static void
-freeByteM(codeset)
- CodeSet codeset;
+freeByteM(
+ CodeSet codeset)
{
int i;
ByteInfoList blst;
- if(codeset->byteM == NULL) {
+ if (codeset->byteM == NULL) {
return ;
}
blst = codeset->byteM;
- for(i=0;i<codeset->length;i++){
- if(blst[i].byteinfo){
+ for (i = 0; i < codeset->length; i++) {
+ if (blst[i].byteinfo) {
Xfree(blst[i].byteinfo);
blst[i].byteinfo = NULL;
}
@@ -1046,25 +1047,26 @@ freeByteM(codeset)
Xfree(codeset->byteM);
codeset->byteM = NULL;
}
+
static void
-freeConversion(codeset)
- CodeSet codeset;
+freeConversion(
+ CodeSet codeset)
{
Conversion mbconv,ctconv;
- if( codeset->mbconv ) {
+ if (codeset->mbconv) {
mbconv = codeset->mbconv;
/* ... */
- if(mbconv->convlist){
+ if (mbconv->convlist) {
Xfree(mbconv->convlist);
mbconv->convlist = NULL;
}
Xfree(mbconv);
codeset->mbconv = NULL;
}
- if( codeset->ctconv ) {
+ if (codeset->ctconv) {
ctconv = codeset->ctconv;
/* ... */
- if(ctconv->convlist){
+ if (ctconv->convlist) {
Xfree(ctconv->convlist);
ctconv->convlist = NULL;
}
@@ -1072,57 +1074,60 @@ freeConversion(codeset)
codeset->ctconv = NULL;
}
}
+
static void
-freeExtdSegment(codeset)
- CodeSet codeset;
+freeExtdSegment(
+ CodeSet codeset)
{
ExtdSegment ctextseg;
- if(codeset->ctextseg == NULL) {
- return ;
+ if (codeset->ctextseg == NULL) {
+ return;
}
ctextseg = codeset->ctextseg;
- if(ctextseg->name){
+ if (ctextseg->name) {
Xfree(ctextseg->name);
ctextseg->name = NULL;
}
- if(ctextseg->area){
+ if (ctextseg->area) {
Xfree(ctextseg->area);
ctextseg->area = NULL;
}
Xfree(codeset->ctextseg);
codeset->ctextseg = NULL;
}
+
static void
-freeParseInfo(codeset)
- CodeSet codeset;
+freeParseInfo(
+ CodeSet codeset)
{
ParseInfo parse_info;
- if(codeset->parse_info == NULL) {
- return ;
+ if (codeset->parse_info == NULL) {
+ return;
}
parse_info = codeset->parse_info;
- if(parse_info->encoding){
+ if (parse_info->encoding) {
Xfree(parse_info->encoding);
parse_info->encoding = NULL;
}
Xfree(codeset->parse_info);
codeset->parse_info = NULL;
}
+
static void
-destroy_CodeSetList(gen)
- XLCdGenericPart *gen ;
+destroy_CodeSetList(
+ XLCdGenericPart *gen)
{
CodeSet *codeset = gen->codeset_list;
int i;
- if(gen->codeset_num == 0) {
+ if (gen->codeset_num == 0) {
return;
}
- for(i=0;i<gen->codeset_num;i++){
+ for (i=0;i<gen->codeset_num;i++) {
freeByteM(codeset[i]);
freeConversion(codeset[i]);
freeExtdSegment(codeset[i]);
freeParseInfo(codeset[i]);
- if(codeset[i]->charset_list){
+ if (codeset[i]->charset_list) {
Xfree(codeset[i]->charset_list);
codeset[i]->charset_list = NULL;
}
@@ -1130,26 +1135,26 @@ destroy_CodeSetList(gen)
}
Xfree(codeset); gen->codeset_list = NULL;
}
-/* */
+
static void
-destroy_SegConv(gen)
- XLCdGenericPart *gen ;
+destroy_SegConv(
+ XLCdGenericPart *gen)
{
SegConv seg = gen->segment_conv;
int i;
- if(gen->segment_conv_num == 0) {
+ if (gen->segment_conv_num == 0) {
return;
}
- for(i=0;i<gen->segment_conv_num;i++){
- if(seg[i].source_encoding){
+ for (i=0;i<gen->segment_conv_num;i++) {
+ if (seg[i].source_encoding) {
Xfree(seg[i].source_encoding);
seg[i].source_encoding = NULL;
}
- if(seg[i].destination_encoding){
+ if (seg[i].destination_encoding) {
Xfree(seg[i].destination_encoding);
seg[i].destination_encoding = NULL;
}
- if(seg[i].conv){
+ if (seg[i].conv) {
Xfree(seg[i].conv); seg[i].conv = NULL;
}
}
@@ -1157,25 +1162,26 @@ destroy_SegConv(gen)
}
static void
-destroy_gen(lcd)
- XLCd lcd;
+destroy_gen(
+ XLCd lcd)
{
XLCdGenericPart *gen = XLC_GENERIC_PART(lcd);
destroy_SegConv(gen);
destroy_CodeSetList(gen);
- if(gen->mb_parse_table){
+ if (gen->mb_parse_table) {
Xfree(gen->mb_parse_table);
gen->mb_parse_table = NULL;
}
- if(gen->mb_parse_list){
+ if (gen->mb_parse_list) {
Xfree(gen->mb_parse_list);
gen->mb_parse_list = NULL;
}
}
/* VW/UDC end 95.01.08 */
+
static void
-destroy(lcd)
- XLCd lcd;
+destroy(
+ XLCd lcd)
{
XLCdPublicMethods superclass = XLC_PUBLIC_METHODS(lcd)->superclass;
diff --git a/src/xlibi18n/lcInit.c b/src/xlibi18n/lcInit.c
index e4d3a7a4..cfa2b076 100644
--- a/src/xlibi18n/lcInit.c
+++ b/src/xlibi18n/lcInit.c
@@ -74,156 +74,105 @@ Sun Microsystems, Inc. or its licensors is granted.
* Modifier: Masayoshi Shimamura FUJITSU LIMITED
*
*/
+/* $XFree86: xc/lib/X11/lcInit.c,v 3.10 2002/11/01 13:43:31 alanh Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
#ifdef USE_DYNAMIC_LC
#undef USE_DEFAULT_LOADER
+#undef USE_GENERIC_LOADER
+#undef USE_UTF8_LOADER
#else
#define USE_GENERIC_LOADER
#define USE_DEFAULT_LOADER
+#define USE_UTF8_LOADER
#ifdef X_LOCALE
# define USE_EUC_LOADER
# define USE_SJIS_LOADER
# define USE_JIS_LOADER
-# define USE_UTF_LOADER
#endif
#endif
-#ifdef USE_DEFAULT_LOADER
-extern XLCd _XlcDefaultLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
-#endif
+/*
+ * The _XlcInitLoader function initializes the locale object loader list
+ * with vendor specific manner.
+ */
-#ifdef USE_DYNAMIC_LC
-extern XLCd _XlcDynamicLoad(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
-#endif
+void
+_XlcInitLoader()
+{
-#ifdef DYNAMIC_LOAD
-#ifdef AIXV3
-extern XLCd _XaixOsDynamicLoad(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
-#endif /* AIXV3 */
-#endif
+#ifdef USE_DYNAMIC_LC
+ _XlcAddLoader(_XlcDynamicLoad, XlcHead);
+#else /* USE_DYNAMIC_LC */
#ifdef USE_GENERIC_LOADER
-extern XLCd _XlcGenericLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
+ _XlcAddLoader(_XlcGenericLoader, XlcHead);
#endif
-#ifdef USE_UTF_LOADER
-extern XLCd _XlcUtfLoader(
-#if NeedFunctionPrototypes
- char*
+#ifdef USE_DEFAULT_LOADER
+ _XlcAddLoader(_XlcDefaultLoader, XlcHead);
#endif
-);
+
+#ifdef USE_UTF8_LOADER
+ _XlcAddLoader(_XlcUtf8Loader, XlcHead);
#endif
#ifdef USE_EUC_LOADER
-extern XLCd _XlcEucLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
+ _XlcAddLoader(_XlcEucLoader, XlcHead);
#endif
#ifdef USE_SJIS_LOADER
-extern XLCd _XlcSjisLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
+ _XlcAddLoader(_XlcSjisLoader, XlcHead);
#endif
#ifdef USE_JIS_LOADER
-extern XLCd _XlcJisLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
+ _XlcAddLoader(_XlcJisLoader, XlcHead);
#endif
#ifdef USE_DYNAMIC_LOADER
-extern XLCd _XlcDynamicLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
+ _XlcAddLoader(_XlcDynamicLoader, XlcHead);
#endif
-/*
- * The _XlcInitLoader function initializes the locale object loader list
- * with vendor specific manner.
- */
+#endif /* USE_DYNAMIC_LC */
+}
void
-#if NeedFunctionPrototypes
-_XlcInitLoader(char *name)
-#else
-_XlcInitLoader(name)
- char *name;
-#endif
+_XlcDeInitLoader()
{
#ifdef USE_DYNAMIC_LC
- _XlcAddLoader(_XlcDynamicLoad, XlcHead);
-
-#ifdef USE_DEFAULT_LOADER
- if (strcmp(name, "C") == 0 || strcmp(name, "POSIX") == 0)
- _XlcAddLoader(_XlcDefaultLoader, XlcHead);
- else
- _XlcAddLoader(_XlcDefaultLoader, XlcTail);
-#endif
-
+ _XlcRemoveLoader(_XlcDynamicLoad);
#else /* USE_DYNAMIC_LC */
#ifdef USE_GENERIC_LOADER
- _XlcAddLoader(_XlcGenericLoader, XlcHead);
+ _XlcRemoveLoader(_XlcGenericLoader);
#endif
#ifdef USE_DEFAULT_LOADER
- _XlcAddLoader(_XlcDefaultLoader, XlcHead);
+ _XlcRemoveLoader(_XlcDefaultLoader);
+#endif
+
+#ifdef USE_UTF8_LOADER
+ _XlcRemoveLoader(_XlcUtf8Loader);
#endif
#ifdef USE_EUC_LOADER
- _XlcAddLoader(_XlcEucLoader, XlcHead);
+ _XlcRemoveLoader(_XlcEucLoader);
#endif
#ifdef USE_SJIS_LOADER
- _XlcAddLoader(_XlcSjisLoader, XlcHead);
+ _XlcRemoveLoader(_XlcSjisLoader);
#endif
#ifdef USE_JIS_LOADER
- _XlcAddLoader(_XlcJisLoader, XlcHead);
+ _XlcRemoveLoader(_XlcJisLoader);
#endif
-#ifdef USE_UTF_LOADER
- _XlcAddLoader(_XlcUtfLoader, XlcHead);
+#ifdef USE_DYNAMIC_LOADER
+ _XlcRemoveLoader(_XlcDynamicLoader);
#endif
#endif /* USE_DYNAMIC_LC */
-
-#ifdef DYNAMIC_LOAD
-#ifdef AIXV3
- _XlcAddLoader(_XaixOsDynamicLoad, XlcHead);
-#endif /* AIXV3 */
-#endif /* DYNAMIC_LOAD */
-
-#ifdef USE_DYNAMIC_LOADER
- _XlcAddLoader(_XlcDynamicLoader, XlcHead);
-#endif
}
diff --git a/src/xlibi18n/lcPrTxt.c b/src/xlibi18n/lcPrTxt.c
index c06a628f..8998ff21 100644
--- a/src/xlibi18n/lcPrTxt.c
+++ b/src/xlibi18n/lcPrTxt.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcPrTxt.c,v 1.8 2002/06/03 22:36:00 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -30,10 +31,10 @@
#include <X11/Xatom.h>
static XPointer *
-alloc_list(is_wide_char, count, nitems)
- Bool is_wide_char;
- int count;
- int nitems;
+alloc_list(
+ Bool is_wide_char,
+ int count,
+ int nitems)
{
if (is_wide_char) {
wchar_t **wstr_list;
@@ -67,11 +68,11 @@ alloc_list(is_wide_char, count, nitems)
}
static void
-copy_list(is_wide_char, text, list, count)
- Bool is_wide_char;
- XPointer text;
- XPointer *list;
- int count;
+copy_list(
+ Bool is_wide_char,
+ XPointer text,
+ XPointer *list,
+ int count)
{
int length;
@@ -105,22 +106,22 @@ copy_list(is_wide_char, text, list, count)
}
static int
-_XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
- XLCd lcd;
- Display *dpy;
- XTextProperty *text_prop;
- char *to_type;
- XPointer **list_ret;
- int *count_ret;
+_XTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ const char *to_type,
+ XPointer **list_ret,
+ int *count_ret)
{
- XlcConv conv;
- char *from_type;
+ XlcConv conv = NULL;
+ const char *from_type;
XPointer from, to, buf;
char *str_ptr, *last_ptr;
Atom encoding;
- int from_left, to_left, buf_len, ret;
+ int from_left, to_left, buf_len, ret, len;
int unconv_num, nitems = text_prop->nitems;
- Bool is_wide_char = False;
+ Bool is_wide_char = False, do_strcpy = False;
if (strcmp(XlcNWideChar, to_type) == 0)
is_wide_char = True;
@@ -137,6 +138,8 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
encoding = text_prop->encoding;
if (encoding == XA_STRING)
from_type = XlcNString;
+ else if (encoding == XInternAtom(dpy, "UTF8_STRING", False))
+ from_type = XlcNUtf8String;
else if (encoding == XInternAtom(dpy, "COMPOUND_TEXT", False))
from_type = XlcNCompoundText;
else if (encoding == XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False))
@@ -145,21 +148,30 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
return XConverterNotFound;
if (is_wide_char) {
- buf_len = text_prop->nitems + 1;
- buf = (XPointer) Xmalloc(buf_len * sizeof(wchar_t));
+ buf_len = (text_prop->nitems + 1) * sizeof(wchar_t);;
} else {
- buf_len = text_prop->nitems * XLC_PUBLIC(lcd, mb_cur_max) + 1;
+ if (strcmp(to_type, XlcNUtf8String) == 0)
+ buf_len = text_prop->nitems * 6 + 1;
+ else
+ buf_len = text_prop->nitems * XLC_PUBLIC(lcd, mb_cur_max) + 1;
buf = (XPointer) Xmalloc(buf_len);
}
+ buf = (XPointer) Xmalloc(buf_len);
if (buf == NULL)
return XNoMemory;
to = buf;
to_left = buf_len;
- conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
- if (conv == NULL) {
- Xfree(buf);
- return XConverterNotFound;
+ /* can be XlcNMultiByte to XlcNMultiByte,
+ or XlcNUtf8String to XlcNUtf8String */
+ if (!strcmp(from_type, to_type)) {
+ do_strcpy = True;
+ } else {
+ conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
+ if (conv == NULL) {
+ Xfree(buf);
+ return XConverterNotFound;
+ }
}
last_ptr = str_ptr = (char *) text_prop->value;
@@ -171,7 +183,17 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
from_left = str_ptr - last_ptr;
last_ptr = str_ptr;
- ret = _XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0);
+ if (do_strcpy) {
+ len = min(from_left, to_left);
+ strncpy(to, from, len);
+ from += len;
+ to += len;
+ from_left -= len;
+ to_left -= len;
+ ret = 0;
+ } else {
+ ret = _XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0);
+ }
if (ret < 0)
continue;
@@ -198,13 +220,16 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
nitems--;
}
- _XlcCloseConverter(conv);
+ if (! do_strcpy)
+ _XlcCloseConverter(conv);
- if (is_wide_char)
+ if (is_wide_char) {
*((wchar_t *) to) = (wchar_t) 0;
- else
+ to_left -= sizeof(wchar_t);
+ } else {
*((char *) to) = '\0';
- to_left--;
+ to_left--;
+ }
*list_ret = alloc_list(is_wide_char, *count_ret, buf_len - to_left);
if (*list_ret)
@@ -216,33 +241,45 @@ _XTextPropertyToTextList(lcd, dpy, text_prop, to_type, list_ret, count_ret)
}
int
-_XmbTextPropertyToTextList(lcd, dpy, text_prop, list_ret, count_ret)
- XLCd lcd;
- Display *dpy;
- XTextProperty *text_prop;
- char ***list_ret;
- int *count_ret;
+_XmbTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
{
return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNMultiByte,
(XPointer **) list_ret, count_ret);
}
int
-_XwcTextPropertyToTextList(lcd, dpy, text_prop, list_ret, count_ret)
- XLCd lcd;
- Display *dpy;
- XTextProperty *text_prop;
- wchar_t ***list_ret;
- int *count_ret;
+_XwcTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
{
return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNWideChar,
(XPointer **) list_ret, count_ret);
}
+int
+_Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNUtf8String,
+ (XPointer **) list_ret, count_ret);
+}
+
void
-_XwcFreeStringList(lcd, list)
- XLCd lcd;
- wchar_t **list;
+_XwcFreeStringList(
+ XLCd lcd,
+ wchar_t **list)
{
if (list) {
if (*list)
diff --git a/src/xlibi18n/lcPubWrap.c b/src/xlibi18n/lcPubWrap.c
index f9eeb244..936005cb 100644
--- a/src/xlibi18n/lcPubWrap.c
+++ b/src/xlibi18n/lcPubWrap.c
@@ -23,19 +23,13 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcPubWrap.c,v 1.5 2001/07/25 15:04:45 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
-#if NeedVarargsPrototypes
char *
_XGetLCValues(XLCd lcd, ...)
-#else
-char *
-_XGetLCValues(lcd, va_alist)
- XLCd lcd;
- va_dcl
-#endif
{
va_list var;
XlcArgList args;
@@ -43,11 +37,11 @@ _XGetLCValues(lcd, va_alist)
int num_args;
XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
- Va_start(var, lcd);
+ va_start(var, lcd);
_XlcCountVaList(var, &num_args);
va_end(var);
- Va_start(var, lcd);
+ va_start(var, lcd);
_XlcVaToArgList(var, num_args, &args);
va_end(var);
@@ -62,8 +56,8 @@ _XGetLCValues(lcd, va_alist)
}
void
-_XlcDestroyLC(lcd)
- XLCd lcd;
+_XlcDestroyLC(
+ XLCd lcd)
{
XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
@@ -71,9 +65,9 @@ _XlcDestroyLC(lcd)
}
XLCd
-_XlcCreateLC(name, methods)
- char *name;
- XLCdMethods methods;
+_XlcCreateLC(
+ const char *name,
+ XLCdMethods methods)
{
XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
XLCd lcd;
diff --git a/src/xlibi18n/lcPublic.c b/src/xlibi18n/lcPublic.c
index c72669ef..853ed8f7 100644
--- a/src/xlibi18n/lcPublic.c
+++ b/src/xlibi18n/lcPublic.c
@@ -23,17 +23,23 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcPublic.c,v 1.11 2001/11/16 00:52:28 dawes Exp $ */
#include <stdio.h>
#include "Xlibint.h"
#include "XlcPubI.h"
-static char *default_string();
+static const char *
+default_string(
+ XLCd lcd)
+{
+ return XLC_PUBLIC(lcd, default_string);
+}
-static XLCd create();
-static Bool initialize();
-static void destroy();
-static char *get_values();
+static XLCd create (const char *name, XLCdMethods methods);
+static Bool initialize (XLCd lcd);
+static void destroy (XLCd lcd);
+static char *get_values (XLCd lcd, XlcArgList args, int num_args);
static XLCdPublicMethodsRec publicMethods = {
{
@@ -44,8 +50,10 @@ static XLCdPublicMethodsRec publicMethods = {
_XrmDefaultInitParseInfo,
_XmbTextPropertyToTextList,
_XwcTextPropertyToTextList,
+ _Xutf8TextPropertyToTextList,
_XmbTextListToTextProperty,
_XwcTextListToTextProperty,
+ _Xutf8TextListToTextProperty,
_XwcFreeStringList,
default_string,
NULL,
@@ -63,17 +71,10 @@ static XLCdPublicMethodsRec publicMethods = {
XLCdMethods _XlcPublicMethods = (XLCdMethods) &publicMethods;
-static char *
-default_string(lcd)
- XLCd lcd;
-{
- return XLC_PUBLIC(lcd, default_string);
-}
-
static XLCd
-create(name, methods)
- char *name;
- XLCdMethods methods;
+create(
+ const char *name,
+ XLCdMethods methods)
{
XLCd lcd;
XLCdPublicMethods new;
@@ -91,7 +92,7 @@ create(name, methods)
new = (XLCdPublicMethods) Xmalloc(sizeof(XLCdPublicMethodsRec));
if (new == NULL)
goto err;
- *new = *((XLCdPublicMethods) methods);
+ memcpy(new,methods,sizeof(XLCdPublicMethodsRec));
lcd->methods = (XLCdMethods) new;
return lcd;
@@ -102,8 +103,8 @@ err:
}
static Bool
-load_public(lcd)
- XLCd lcd;
+load_public(
+ XLCd lcd)
{
XLCdPublicPart *pub = XLC_PUBLIC_PART(lcd);
char **values, *str;
@@ -137,8 +138,8 @@ load_public(lcd)
}
static Bool
-initialize_core(lcd)
- XLCd lcd;
+initialize_core(
+ XLCd lcd)
{
XLCdMethods methods = lcd->methods;
XLCdMethods core = &publicMethods.core;
@@ -172,12 +173,18 @@ initialize_core(lcd)
if (methods->wc_text_prop_to_list == NULL)
methods->wc_text_prop_to_list = core->wc_text_prop_to_list;
+ if (methods->utf8_text_prop_to_list == NULL)
+ methods->utf8_text_prop_to_list = core->utf8_text_prop_to_list;
+
if (methods->mb_text_list_to_prop == NULL)
methods->mb_text_list_to_prop = core->mb_text_list_to_prop;
if (methods->wc_text_list_to_prop == NULL)
methods->wc_text_list_to_prop = core->wc_text_list_to_prop;
+ if (methods->utf8_text_list_to_prop == NULL)
+ methods->utf8_text_list_to_prop = core->utf8_text_list_to_prop;
+
if (methods->wc_free_string_list == NULL)
methods->wc_free_string_list = core->wc_free_string_list;
@@ -187,17 +194,15 @@ initialize_core(lcd)
return True;
}
-extern Bool _XlcInitCTInfo();
-
static Bool
-initialize(lcd)
- XLCd lcd;
+initialize(
+ XLCd lcd)
{
XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
XLCdPublicMethodsPart *pub_methods = &publicMethods.pub;
XLCdPublicPart *pub = XLC_PUBLIC_PART(lcd);
char *name;
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
+#if !defined(X_LOCALE)
int len;
char sinamebuf[256];
char* siname;
@@ -210,25 +215,29 @@ initialize(lcd)
return False;
name = lcd->core->name;
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
+#if !defined(X_LOCALE)
/*
- * _XlMapOSLOcaleName will return the same string or a substring
+ * _XlMapOSLocaleName will return the same string or a substring
* of name, so strlen(name) is okay
*/
- if ((len = strlen(name)) < sizeof sinamebuf) siname = sinamebuf;
- else siname = Xmalloc (len + 1);
- if (siname == NULL) return False;
+ if ((len = strlen(name)) < sizeof sinamebuf)
+ siname = sinamebuf;
+ else
+ siname = Xmalloc (len + 1);
+ if (siname == NULL)
+ return False;
name = _XlcMapOSLocaleName(name, siname);
#endif
/* _XlcResolveLocaleName will lookup the SI's name for the locale */
if (_XlcResolveLocaleName(name, pub) == 0) {
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
+#if !defined(X_LOCALE)
if (siname != sinamebuf) Xfree (siname);
#endif
return False;
}
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
- if (siname != sinamebuf) Xfree (siname);
+#if !defined(X_LOCALE)
+ if (siname != sinamebuf)
+ Xfree (siname);
#endif
if (pub->default_string == NULL)
@@ -244,8 +253,8 @@ initialize(lcd)
}
static void
-destroy_core(lcd)
- XLCd lcd;
+destroy_core(
+ XLCd lcd)
{
if (lcd->core) {
if (lcd->core->name)
@@ -260,8 +269,8 @@ destroy_core(lcd)
}
static void
-destroy(lcd)
- XLCd lcd;
+destroy(
+ XLCd lcd)
{
XLCdPublicPart *pub = XLC_PUBLIC_PART(lcd);
@@ -293,10 +302,10 @@ static XlcResource resources[] = {
};
static char *
-get_values(lcd, args, num_args)
- register XLCd lcd;
- register XlcArgList args;
- register int num_args;
+get_values(
+ XLCd lcd,
+ XlcArgList args,
+ int num_args)
{
XLCdPublic pub = (XLCdPublic) lcd->core;
diff --git a/src/xlibi18n/lcRM.c b/src/xlibi18n/lcRM.c
index 0824a6f7..2e0f15cc 100644
--- a/src/xlibi18n/lcRM.c
+++ b/src/xlibi18n/lcRM.c
@@ -22,101 +22,202 @@
*
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
*/
+/* $XFree86: xc/lib/X11/lcRM.c,v 1.5 2001/01/17 19:41:55 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
#include <stdio.h>
-typedef struct _StateRec {
- XLCd lcd;
- XlcConv conv;
-} StateRec, *State;
+/*
+ * Default implementation of methods for Xrm parsing.
+ */
+
+/* ======================= Unibyte implementation ======================= */
+
+/* Only for efficiency, to speed up things. */
+
+/* This implementation must keep the locale, for lcname. */
+typedef struct _UbStateRec {
+ XLCd lcd;
+} UbStateRec, *UbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+ub_mbinit(
+ XPointer state)
+{
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
+static char
+ub_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ *lenp = 1;
+ return *str;
+}
+
+/* Terminates a sequence of calls to mbchar. */
+static void
+ub_mbfinish(
+ XPointer state)
+{
+}
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+ub_lcname(
+ XPointer state)
+{
+ return ((UbState) state)->lcd->core->name;
+}
+
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
static void
-mbinit(state)
- XPointer state;
+ub_destroy(
+ XPointer state)
{
- _XlcResetConverter(((State) state)->conv);
+ _XCloseLC(((UbState) state)->lcd);
+ Xfree((char *) state);
}
+static const XrmMethodsRec ub_methods = {
+ ub_mbinit,
+ ub_mbchar,
+ ub_mbfinish,
+ ub_lcname,
+ ub_destroy
+};
+
+/* ======================= Multibyte implementation ======================= */
+
+/* This implementation uses an XlcConv from XlcNMultiByte to XlcNWideChar. */
+typedef struct _MbStateRec {
+ XLCd lcd;
+ XlcConv conv;
+} MbStateRec, *MbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+mb_mbinit(
+ XPointer state)
+{
+ _XlcResetConverter(((MbState) state)->conv);
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
static char
-mbchar(state, str, lenp)
- XPointer state;
- char *str;
- int *lenp;
+mb_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
{
- XlcConv conv = ((State) state)->conv;
- XlcCharSet charset;
- char *from, *to, buf[BUFSIZ];
- int from_left, to_left;
- XPointer args[1];
+ XlcConv conv = ((MbState) state)->conv;
+ const char *from;
+ wchar_t *to, wc;
+ int cur_max, i, from_left, to_left, ret;
+
+ cur_max = XLC_PUBLIC(((MbState) state)->lcd, mb_cur_max);
from = str;
- *lenp = from_left = XLC_PUBLIC(((State) state)->lcd, mb_cur_max);
- to = buf;
- to_left = BUFSIZ;
- args[0] = (XPointer) &charset;
-
- _XlcConvert(conv, (XPointer *) &from, &from_left, (XPointer *) &to,
- &to_left, args, 1);
-
+ /* Determine from_left. Avoid overrun error which could occur if
+ from_left > strlen(str). */
+ from_left = cur_max;
+ for (i = 0; i < cur_max; i++)
+ if (str[i] == '\0') {
+ from_left = i;
+ break;
+ }
+ *lenp = from_left;
+
+ to = &wc;
+ to_left = 1;
+
+ ret = _XlcConvert(conv, (XPointer *) &from, &from_left,
+ (XPointer *) &to, &to_left, NULL, 0);
*lenp -= from_left;
- /* XXX */
- return buf[0];
+ if (ret < 0 || to_left > 0) {
+ /* Invalid or incomplete multibyte character seen. */
+ *lenp = 1;
+ return 0x7f;
+ }
+ /* Return a 'char' equivalent to wc. */
+ return (wc >= 0 && wc <= 0x7f ? wc : 0x7f);
}
+/* Terminates a sequence of calls to mbchar. */
static void
-mbfinish(state)
- XPointer state;
+mb_mbfinish(
+ XPointer state)
{
}
-static char *
-lcname(state)
- XPointer state;
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+mb_lcname(
+ XPointer state)
{
- return ((State) state)->lcd->core->name;
+ return ((MbState) state)->lcd->core->name;
}
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
static void
-destroy(state)
- XPointer state;
+mb_destroy(
+ XPointer state)
{
- _XlcCloseConverter(((State) state)->conv);
- _XCloseLC(((State) state)->lcd);
+ _XlcCloseConverter(((MbState) state)->conv);
+ _XCloseLC(((MbState) state)->lcd);
Xfree((char *) state);
}
-static XrmMethodsRec rm_methods = {
- mbinit,
- mbchar,
- mbfinish,
- lcname,
- destroy
-} ;
+static const XrmMethodsRec mb_methods = {
+ mb_mbinit,
+ mb_mbchar,
+ mb_mbfinish,
+ mb_lcname,
+ mb_destroy
+};
+
+/* ======================= Exported function ======================= */
XrmMethods
-_XrmDefaultInitParseInfo(lcd, rm_state)
- XLCd lcd;
- XPointer *rm_state;
+_XrmDefaultInitParseInfo(
+ XLCd lcd,
+ XPointer *rm_state)
{
- State state;
+ if (XLC_PUBLIC(lcd, mb_cur_max) == 1) {
+ /* Unibyte case. */
+ UbState state = (UbState) Xmalloc(sizeof(UbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
- state = (State) Xmalloc(sizeof(StateRec));
- if (state == NULL)
- return (XrmMethods) NULL;
+ *rm_state = (XPointer) state;
+ return &ub_methods;
+ } else {
+ /* Multibyte case. */
+ MbState state = (MbState) Xmalloc(sizeof(MbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
- state->lcd = lcd;
- state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNChar);
- if (state->conv == NULL) {
- Xfree((char *) state);
+ state->lcd = lcd;
+ state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (state->conv == NULL) {
+ Xfree((char *) state);
+ return (XrmMethods) NULL;
+ }
- return (XrmMethods) NULL;
+ *rm_state = (XPointer) state;
+ return &mb_methods;
}
-
- *rm_state = (XPointer) state;
-
- return &rm_methods;
}
diff --git a/src/xlibi18n/lcStd.c b/src/xlibi18n/lcStd.c
index 9d938d39..9a07bbb4 100644
--- a/src/xlibi18n/lcStd.c
+++ b/src/xlibi18n/lcStd.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcStd.c,v 1.5 2001/01/17 19:41:55 dawes Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -197,16 +198,26 @@ _Xlcwcstombs(lcd, str, wstr, len)
int
_Xmbtowc(wstr, str, len)
wchar_t *wstr;
+#ifdef ISC
+ char const *str;
+ size_t len;
+#else
char *str;
int len;
+#endif
{
return _Xlcmbtowc((XLCd) NULL, wstr, str, len);
}
int
_Xmblen(str, len)
+#ifdef ISC
+ char const *str;
+ size_t len;
+#else
char *str;
int len;
+#endif
{
return _Xmbtowc((wchar_t *) NULL, str, len);
}
@@ -303,3 +314,52 @@ _Xwcsncmp(wstr1, wstr2, len)
return *wstr1 - *wstr2;
}
+
+
+int
+_Xlcmbstoutf8(lcd, ustr, str, len)
+ XLCd lcd;
+ char *ustr;
+ const char *str;
+ int len;
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) str;
+ from_left = strlen(str);
+ to = (XPointer) ustr;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (ustr && to_left > 0)
+ ustr[ret] = '\0';
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+int
+_Xmbstoutf8(ustr, str, len)
+ char *ustr;
+ const char *str;
+ int len;
+{
+ return _Xlcmbstoutf8((XLCd) NULL, ustr, str, len);
+}
diff --git a/src/xlibi18n/lcTxtPr.c b/src/xlibi18n/lcTxtPr.c
index 1efdb278..25e03c8a 100644
--- a/src/xlibi18n/lcTxtPr.c
+++ b/src/xlibi18n/lcTxtPr.c
@@ -23,6 +23,7 @@
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
*/
+/* $XFree86: xc/lib/X11/lcTxtPr.c,v 3.4 2001/10/28 03:32:35 tsi Exp $ */
#include "Xlibint.h"
#include "XlcPubI.h"
@@ -31,14 +32,14 @@
#include <stdio.h>
static int
-get_buf_size(is_wide_char, list, count)
- Bool is_wide_char;
- XPointer list;
- int count;
+get_buf_size(
+ Bool is_wide_char,
+ XPointer list,
+ int count)
{
- register int length = 0;
- register char **mb_list;
- register wchar_t **wc_list;
+ int length = 0;
+ char **mb_list;
+ wchar_t **wc_list;
if (list == NULL)
return 0;
@@ -64,23 +65,23 @@ get_buf_size(is_wide_char, list, count)
}
static int
-_XTextListToTextProperty(lcd, dpy, from_type, list, count, style, text_prop)
- XLCd lcd;
- Display *dpy;
- char *from_type;
- XPointer list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+_XTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ const char *from_type,
+ XPointer list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
Atom encoding;
XlcConv conv;
- char *to_type;
- char **mb_list;
- wchar_t **wc_list;
+ const char *to_type;
+ char **mb_list = NULL;
+ wchar_t **wc_list = NULL;
XPointer from;
char *to, *buf, *value;
- int from_left, to_left, buf_len, nitems, unconv_num, ret, i;
+ int from_left, to_left, buf_len, nitems, unconv_num = 0, ret, i;
Bool is_wide_char = False;
if (strcmp(XlcNWideChar, from_type) == 0)
@@ -96,6 +97,10 @@ _XTextListToTextProperty(lcd, dpy, from_type, list, count, style, text_prop)
encoding = XA_STRING;
to_type = XlcNString;
break;
+ case XUTF8StringStyle:
+ encoding = XInternAtom(dpy, "UTF8_STRING", False);
+ to_type = XlcNUtf8String;
+ break;
case XCompoundTextStyle:
encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
to_type = XlcNCompoundText;
@@ -209,27 +214,40 @@ done:
}
int
-_XmbTextListToTextProperty(lcd, dpy, list, count, style, text_prop)
- XLCd lcd;
- Display *dpy;
- char **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+_XmbTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
return _XTextListToTextProperty(lcd, dpy, XlcNMultiByte, (XPointer) list,
count, style, text_prop);
}
int
-_XwcTextListToTextProperty(lcd, dpy, list, count, style, text_prop)
- XLCd lcd;
- Display *dpy;
- wchar_t **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+_XwcTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
return _XTextListToTextProperty(lcd, dpy, XlcNWideChar, (XPointer) list,
count, style, text_prop);
}
+
+int
+_Xutf8TextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNUtf8String, (XPointer) list,
+ count, style, text_prop);
+}
diff --git a/src/xlibi18n/lcUTF8.c b/src/xlibi18n/lcUTF8.c
new file mode 100644
index 00000000..1f40704f
--- /dev/null
+++ b/src/xlibi18n/lcUTF8.c
@@ -0,0 +1,1844 @@
+/* $TOG: $ */
+/******************************************************************
+
+ Copyright 1993 by SunSoft, Inc.
+ Copyright 1999-2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
+FOR 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 THIS SOFTWARE.
+
+******************************************************************/
+/* $XFree86: xc/lib/X11/lcUTF8.c,v 1.15 2002/10/08 23:31:36 dawes Exp $ */
+
+/*
+ * This file contains:
+ *
+ * I. Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
+ *
+ * Used for three purposes:
+ * 1. The UTF-8 locales, see below.
+ * 2. Unicode aware applications for which the use of 8-bit character
+ * sets is an anachronism.
+ * 3. For conversion from keysym to locale encoding.
+ *
+ * II. Conversion files for an UTF-8 locale loader.
+ * Supports: all locales with codeset UTF-8.
+ * How: Provides converters for UTF-8.
+ * Platforms: all systems.
+ *
+ * The loader itself is located in lcUTF8.c.
+ */
+
+/*
+ * The conversion from UTF-8 to CompoundText is realized in a very
+ * conservative way. Recall that CompoundText data is used for inter-client
+ * communication purposes. We distinguish three classes of clients:
+ * - Clients which accept only those pieces of CompoundText which belong to
+ * the character set understood by the current locale.
+ * (Example: clients which are linked to an older X11 library.)
+ * - Clients which accept CompoundText with multiple character sets and parse
+ * it themselves.
+ * (Example: emacs, xemacs.)
+ * - Clients which rely entirely on the X{mb,wc}TextPropertyToTextList
+ * functions for the conversion of CompoundText to their current locale's
+ * multi-byte/wide-character format.
+ * For best interoperation, the UTF-8 to CompoundText conversion proceeds as
+ * follows. For every character, it first tests whether the character is
+ * representable in the current locale's original (non-UTF-8) character set.
+ * If not, it goes through the list of predefined character sets for
+ * CompoundText and tests if the character is representable in that character
+ * set. If so, it encodes the character using its code within that character
+ * set. If not, it uses an UTF-8-in-CompoundText encapsulation. Since
+ * clients of the first and second kind ignore such encapsulated text,
+ * this encapsulation is kept to a minimum and terminated as early as possible.
+ *
+ * In a distant future, when clients of the first and second kind will have
+ * disappeared, we will be able to stuff UTF-8 data directly in CompoundText
+ * without first going through the list of predefined character sets.
+ */
+
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include "XlcGeneric.h"
+
+static XlcConv
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+
+ conv->methods = methods;
+ conv->state = NULL;
+
+ return conv;
+}
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ Xfree((char *) conv);
+}
+
+/* Replacement character for invalid multibyte sequence or wide character. */
+#define BAD_WCHAR ((ucs4_t) 0xfffd)
+#define BAD_CHAR '?'
+
+/***************************************************************************/
+/* Part I: Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
+ *
+ * Note that this code works in any locale. We store Unicode values in
+ * `ucs4_t' variables, but don't pass them to the user.
+ *
+ * This code has to support all character sets that are used for CompoundText,
+ * nothing more, nothing less. See the table in lcCT.c.
+ * Since the conversion _to_ CompoundText is likely to need the tables for all
+ * character sets at once, we don't use dynamic loading (of tables or shared
+ * libraries through iconv()). Use a fixed set of tables instead.
+ *
+ * We use statically computed tables, not dynamically allocated arrays,
+ * because it's more memory efficient: Different processes using the same
+ * libX11 shared library share the "text" and read-only "data" sections.
+ */
+
+typedef unsigned int ucs4_t;
+#define conv_t XlcConv
+
+typedef struct _Utf8ConvRec {
+ const char *name;
+ XrmQuark xrm_name;
+#if NeedFunctionPrototypes
+ int (* cstowc) (XlcConv, ucs4_t *, unsigned char const *, int);
+#else
+ int (* cstowc) ();
+#endif
+#if NeedFunctionPrototypes
+ int (* wctocs) (XlcConv, unsigned char *, ucs4_t, int);
+#else
+ int (* wctocs) ();
+#endif
+} Utf8ConvRec, *Utf8Conv;
+
+/*
+ * int xxx_cstowc (XlcConv conv, ucs4_t *pwc, unsigned char const *s, int n)
+ * converts the byte sequence starting at s to a wide character. Up to n bytes
+ * are available at s. n is >= 1.
+ * Result is number of bytes consumed (if a wide character was read),
+ * or 0 if invalid, or -1 if n too small.
+ *
+ * int xxx_wctocs (XlcConv conv, unsigned char *r, ucs4_t wc, int n)
+ * converts the wide character wc to the character set xxx, and stores the
+ * result beginning at r. Up to n bytes may be written at r. n is >= 1.
+ * Result is number of bytes written, or 0 if invalid, or -1 if n too small.
+ */
+
+/* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */
+#define RET_ILSEQ 0
+/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */
+#define RET_TOOFEW(n) (-1-(n))
+/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */
+#define RET_TOOSMALL -1
+
+/*
+ * The tables below are bijective. It would be possible to extend the
+ * xxx_wctocs tables to do some transliteration (e.g. U+201C,U+201D -> 0x22)
+ * but *only* with characters not contained in any other table, and *only*
+ * when the current locale is not an UTF-8 locale.
+ */
+
+#include "lcUniConv/utf8.h"
+#include "lcUniConv/ucs2be.h"
+#ifdef notused
+#include "lcUniConv/ascii.h"
+#endif
+#include "lcUniConv/iso8859_1.h"
+#include "lcUniConv/iso8859_2.h"
+#include "lcUniConv/iso8859_3.h"
+#include "lcUniConv/iso8859_4.h"
+#include "lcUniConv/iso8859_5.h"
+#include "lcUniConv/iso8859_6.h"
+#include "lcUniConv/iso8859_7.h"
+#include "lcUniConv/iso8859_8.h"
+#include "lcUniConv/iso8859_9.h"
+#include "lcUniConv/iso8859_10.h"
+#include "lcUniConv/iso8859_11.h"
+#include "lcUniConv/iso8859_13.h"
+#include "lcUniConv/iso8859_14.h"
+#include "lcUniConv/iso8859_15.h"
+#include "lcUniConv/iso8859_16.h"
+#include "lcUniConv/iso8859_9e.h"
+#include "lcUniConv/jisx0201.h"
+#include "lcUniConv/tis620.h"
+#include "lcUniConv/koi8_r.h"
+#include "lcUniConv/koi8_u.h"
+#include "lcUniConv/koi8_c.h"
+#include "lcUniConv/armscii_8.h"
+#include "lcUniConv/cp1133.h"
+#include "lcUniConv/mulelao.h"
+#include "lcUniConv/viscii.h"
+#include "lcUniConv/tcvn.h"
+#include "lcUniConv/georgian_academy.h"
+#include "lcUniConv/georgian_ps.h"
+#include "lcUniConv/cp1251.h"
+#include "lcUniConv/cp1255.h"
+#include "lcUniConv/cp1256.h"
+#include "lcUniConv/tatar_cyr.h"
+
+typedef struct {
+ unsigned short indx; /* index into big table */
+ unsigned short used; /* bitmask of used entries */
+} Summary16;
+
+#include "lcUniConv/gb2312.h"
+#include "lcUniConv/jisx0208.h"
+#include "lcUniConv/jisx0212.h"
+#include "lcUniConv/ksc5601.h"
+#include "lcUniConv/big5.h"
+#include "lcUniConv/big5_emacs.h"
+
+static Utf8ConvRec all_charsets[] = {
+ /* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
+ (for lookup speed), once at the end (as a fallback). */
+ { "ISO10646-1", NULLQUARK,
+ utf8_mbtowc, utf8_wctomb
+ },
+
+ { "ISO8859-1", NULLQUARK,
+ iso8859_1_mbtowc, iso8859_1_wctomb
+ },
+ { "ISO8859-2", NULLQUARK,
+ iso8859_2_mbtowc, iso8859_2_wctomb
+ },
+ { "ISO8859-3", NULLQUARK,
+ iso8859_3_mbtowc, iso8859_3_wctomb
+ },
+ { "ISO8859-4", NULLQUARK,
+ iso8859_4_mbtowc, iso8859_4_wctomb
+ },
+ { "ISO8859-5", NULLQUARK,
+ iso8859_5_mbtowc, iso8859_5_wctomb
+ },
+ { "ISO8859-6", NULLQUARK,
+ iso8859_6_mbtowc, iso8859_6_wctomb
+ },
+ { "ISO8859-7", NULLQUARK,
+ iso8859_7_mbtowc, iso8859_7_wctomb
+ },
+ { "ISO8859-8", NULLQUARK,
+ iso8859_8_mbtowc, iso8859_8_wctomb
+ },
+ { "ISO8859-9", NULLQUARK,
+ iso8859_9_mbtowc, iso8859_9_wctomb
+ },
+ { "ISO8859-10", NULLQUARK,
+ iso8859_10_mbtowc, iso8859_10_wctomb
+ },
+ { "ISO8859-11", NULLQUARK,
+ iso8859_11_mbtowc, iso8859_11_wctomb
+ },
+ { "ISO8859-13", NULLQUARK,
+ iso8859_13_mbtowc, iso8859_13_wctomb
+ },
+ { "ISO8859-14", NULLQUARK,
+ iso8859_14_mbtowc, iso8859_14_wctomb
+ },
+ { "ISO8859-15", NULLQUARK,
+ iso8859_15_mbtowc, iso8859_15_wctomb
+ },
+ { "ISO8859-16", NULLQUARK,
+ iso8859_16_mbtowc, iso8859_16_wctomb
+ },
+ { "JISX0201.1976-0", NULLQUARK,
+ jisx0201_mbtowc, jisx0201_wctomb
+ },
+ { "TIS620-0", NULLQUARK,
+ tis620_mbtowc, tis620_wctomb
+ },
+ { "GB2312.1980-0", NULLQUARK,
+ gb2312_mbtowc, gb2312_wctomb
+ },
+ { "JISX0208.1983-0", NULLQUARK,
+ jisx0208_mbtowc, jisx0208_wctomb
+ },
+ { "JISX0208.1990-0", NULLQUARK,
+ jisx0208_mbtowc, jisx0208_wctomb
+ },
+ { "JISX0212.1990-0", NULLQUARK,
+ jisx0212_mbtowc, jisx0212_wctomb
+ },
+ { "KSC5601.1987-0", NULLQUARK,
+ ksc5601_mbtowc, ksc5601_wctomb
+ },
+ { "KOI8-R", NULLQUARK,
+ koi8_r_mbtowc, koi8_r_wctomb
+ },
+ { "KOI8-U", NULLQUARK,
+ koi8_u_mbtowc, koi8_u_wctomb
+ },
+ { "KOI8-C", NULLQUARK,
+ koi8_c_mbtowc, koi8_c_wctomb
+ },
+ { "TATAR-CYR", NULLQUARK,
+ tatar_cyr_mbtowc, tatar_cyr_wctomb
+ },
+ { "ARMSCII-8", NULLQUARK,
+ armscii_8_mbtowc, armscii_8_wctomb
+ },
+ { "IBM-CP1133", NULLQUARK,
+ cp1133_mbtowc, cp1133_wctomb
+ },
+ { "MULELAO-1", NULLQUARK,
+ mulelao_mbtowc, mulelao_wctomb
+ },
+ { "VISCII1.1-1", NULLQUARK,
+ viscii_mbtowc, viscii_wctomb
+ },
+ { "TCVN-5712", NULLQUARK,
+ tcvn_mbtowc, tcvn_wctomb
+ },
+ { "GEORGIAN-ACADEMY", NULLQUARK,
+ georgian_academy_mbtowc, georgian_academy_wctomb
+ },
+ { "GEORGIAN-PS", NULLQUARK,
+ georgian_ps_mbtowc, georgian_ps_wctomb
+ },
+ { "ISO8859-9E", NULLQUARK,
+ iso8859_9e_mbtowc, iso8859_9e_wctomb
+ },
+ { "MICROSOFT-CP1251", NULLQUARK,
+ cp1251_mbtowc, cp1251_wctomb
+ },
+ { "MICROSOFT-CP1255", NULLQUARK,
+ cp1255_mbtowc, cp1255_wctomb
+ },
+ { "MICROSOFT-CP1256", NULLQUARK,
+ cp1256_mbtowc, cp1256_wctomb
+ },
+ { "BIG5-0", NULLQUARK,
+ big5_mbtowc, big5_wctomb
+ },
+ { "BIG5-E0", NULLQUARK,
+ big5_0_mbtowc, big5_0_wctomb
+ },
+ { "BIG5-E1", NULLQUARK,
+ big5_1_mbtowc, big5_1_wctomb
+ },
+
+ /* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
+ (for lookup speed), once at the end (as a fallback). */
+ { "ISO10646-1", NULLQUARK,
+ utf8_mbtowc, utf8_wctomb
+ },
+
+ /* Encoding ISO10646-1 for fonts means UCS2-like encoding
+ so for conversion to FontCharSet we need this record */
+ { "ISO10646-1", NULLQUARK,
+ ucs2be_mbtowc, ucs2be_wctomb
+ }
+};
+
+#define charsets_table_size (sizeof(all_charsets)/sizeof(all_charsets[0]))
+#define all_charsets_count (charsets_table_size - 1)
+#define ucs2_conv_index (charsets_table_size - 1)
+
+static void
+init_all_charsets (void)
+{
+ Utf8Conv convptr;
+ int i;
+
+ for (convptr = all_charsets, i = charsets_table_size; i > 0; convptr++, i--)
+ convptr->xrm_name = XrmStringToQuark(convptr->name);
+}
+
+#define lazy_init_all_charsets() \
+ do { \
+ if (all_charsets[0].xrm_name == NULLQUARK) \
+ init_all_charsets(); \
+ } while (0)
+
+/* from XlcNCharSet to XlcNUtf8String */
+
+static int
+cstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XlcCharSet charset;
+ const char *name;
+ Utf8Conv convptr;
+ int i;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ if (num_args < 1)
+ return -1;
+
+ charset = (XlcCharSet) args[0];
+ name = charset->encoding_name;
+ /* not charset->name because the latter has a ":GL"/":GR" suffix */
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (!strcmp(convptr->name, name))
+ break;
+ if (i == 0)
+ return -1;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = convptr->cstowc(conv, &wc, src, srcend-src);
+ if (consumed == RET_ILSEQ)
+ return -1;
+ if (consumed == RET_TOOFEW(0))
+ break;
+
+ count = utf8_wctomb(NULL, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ count = utf8_wctomb(NULL, dst, BAD_WCHAR, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ unconv_num++;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_cstoutf8 = {
+ close_converter,
+ cstoutf8,
+ NULL
+};
+
+static XlcConv
+open_cstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ lazy_init_all_charsets();
+ return create_conv(from_lcd, &methods_cstoutf8);
+}
+
+/* from XlcNUtf8String to XlcNCharSet */
+
+static XlcConv
+create_tocs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+ CodeSet *codeset_list;
+ int codeset_num;
+ int charset_num;
+ int i, j, k;
+ Utf8Conv *preferred;
+
+ lazy_init_all_charsets();
+
+ codeset_list = XLC_GENERIC(lcd, codeset_list);
+ codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ charset_num = 0;
+ for (i = 0; i < codeset_num; i++)
+ charset_num += codeset_list[i]->num_charsets;
+ if (charset_num > all_charsets_count-1)
+ charset_num = all_charsets_count-1;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec)
+ + (charset_num + 1) * sizeof(Utf8Conv));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
+
+ /* Loop through all codesets mentioned in the locale. */
+ charset_num = 0;
+ for (i = 0; i < codeset_num; i++) {
+ XlcCharSet *charsets = codeset_list[i]->charset_list;
+ int num_charsets = codeset_list[i]->num_charsets;
+ for (j = 0; j < num_charsets; j++) {
+ const char *name = charsets[j]->encoding_name;
+ /* If it wasn't already encountered... */
+ for (k = charset_num-1; k >= 0; k--)
+ if (!strcmp(preferred[k]->name, name))
+ break;
+ if (k < 0) {
+ /* Look it up in all_charsets[]. */
+ for (k = 0; k < all_charsets_count-1; k++)
+ if (!strcmp(all_charsets[k].name, name)) {
+ /* Add it to the preferred set. */
+ preferred[charset_num++] = &all_charsets[k];
+ break;
+ }
+ }
+ }
+ }
+ preferred[charset_num] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+}
+
+static void
+close_tocs_converter(
+ XlcConv conv)
+{
+ /* conv->state is allocated together with conv, free both at once. */
+ Xfree((char *) conv);
+}
+
+/*
+ * Converts a Unicode character to an appropriate character set. The NULL
+ * terminated array of preferred character sets is passed as first argument.
+ * If successful, *charsetp is set to the character set that was used, and
+ * *sidep is set to the character set side (XlcGL or XlcGR).
+ */
+static int
+charset_wctocs(
+ Utf8Conv *preferred,
+ Utf8Conv *charsetp,
+ XlcSide *sidep,
+ XlcConv conv,
+ unsigned char *r,
+ ucs4_t wc,
+ int n)
+{
+ int count;
+ Utf8Conv convptr;
+ int i;
+
+ for (; *preferred != (Utf8Conv) NULL; preferred++) {
+ convptr = *preferred;
+ count = convptr->wctocs(conv, r, wc, n);
+ if (count == RET_TOOSMALL)
+ return RET_TOOSMALL;
+ if (count != RET_ILSEQ) {
+ *charsetp = convptr;
+ *sidep = (*r < 0x80 ? XlcGL : XlcGR);
+ return count;
+ }
+ }
+ for (convptr = all_charsets+1, i = all_charsets_count-1; i > 0; convptr++, i--) {
+ count = convptr->wctocs(conv, r, wc, n);
+ if (count == RET_TOOSMALL)
+ return RET_TOOSMALL;
+ if (count != RET_ILSEQ) {
+ *charsetp = convptr;
+ *sidep = (*r < 0x80 ? XlcGL : XlcGR);
+ return count;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+utf8tocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (consumed == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8tocs = {
+ close_tocs_converter,
+ utf8tocs,
+ NULL
+};
+
+static XlcConv
+open_utf8tocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_utf8tocs);
+}
+
+/* from XlcNUtf8String to XlcNChar */
+
+static int
+utf8tocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (consumed == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src += consumed;
+ dst += count;
+ break;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8tocs1 = {
+ close_tocs_converter,
+ utf8tocs1,
+ NULL
+};
+
+static XlcConv
+open_utf8tocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_utf8tocs1);
+}
+
+/* from XlcNUtf8String to XlcNString */
+
+static int
+utf8tostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ unsigned char c;
+ ucs4_t wc;
+ int consumed;
+
+ consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (dst == dstend)
+ break;
+ if (consumed == RET_ILSEQ) {
+ consumed = 1;
+ c = BAD_CHAR;
+ unconv_num++;
+ } else {
+ if ((wc & ~(ucs4_t)0xff) != 0) {
+ c = BAD_CHAR;
+ unconv_num++;
+ } else
+ c = (unsigned char) wc;
+ }
+ *dst++ = c;
+ src += consumed;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8tostr = {
+ close_converter,
+ utf8tostr,
+ NULL
+};
+
+static XlcConv
+open_utf8tostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_utf8tostr);
+}
+
+/* from XlcNString to XlcNUtf8String */
+
+static int
+strtoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend) {
+ int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ dst += count;
+ src++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec methods_strtoutf8 = {
+ close_converter,
+ strtoutf8,
+ NULL
+};
+
+static XlcConv
+open_strtoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_strtoutf8);
+}
+
+/* Support for the input methods. */
+
+XPointer
+_Utf8GetConvByName(
+ const char *name)
+{
+ XrmQuark xrm_name;
+ Utf8Conv convptr;
+ int i;
+
+ if (name == NULL)
+ return (XPointer) NULL;
+
+ lazy_init_all_charsets();
+ xrm_name = XrmStringToQuark(name);
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (convptr->xrm_name == xrm_name)
+ return (XPointer) convptr->wctocs;
+ return (XPointer) NULL;
+}
+
+/* from XlcNUcsChar to XlcNChar, needed for input methods */
+
+static XlcConv
+create_ucstocs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+
+ if (XLC_PUBLIC_PART(lcd)->codeset
+ && _XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8") == 0) {
+ XlcConv conv;
+ Utf8Conv *preferred;
+
+ lazy_init_all_charsets();
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + 2 * sizeof(Utf8Conv));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
+
+ preferred[0] = &all_charsets[0]; /* ISO10646 */
+ preferred[1] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+ } else {
+ return create_tocs_conv(lcd, methods);
+ }
+}
+
+static int
+charset_wctocs_exactly(
+ Utf8Conv *preferred,
+ Utf8Conv *charsetp,
+ XlcSide *sidep,
+ XlcConv conv,
+ unsigned char *r,
+ ucs4_t wc,
+ int n)
+{
+ int count;
+ Utf8Conv convptr;
+
+ for (; *preferred != (Utf8Conv) NULL; preferred++) {
+ convptr = *preferred;
+ count = convptr->wctocs(conv, r, wc, n);
+ if (count == RET_TOOSMALL)
+ return RET_TOOSMALL;
+ if (count != RET_ILSEQ) {
+ *charsetp = convptr;
+ *sidep = (*r < 0x80 ? XlcGL : XlcGR);
+ return count;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+ucstocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ ucs4_t const *src = (ucs4_t const *) *from;
+ unsigned char *dst = (unsigned char *) *to;
+ int unconv_num = 0;
+ Utf8Conv *preferred_charsets = (Utf8Conv *) conv->state;
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ XlcCharSet charset = NULL;
+ int count;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ count = charset_wctocs_exactly(preferred_charsets, &chosen_charset,
+ &chosen_side, conv, dst, *src, *to_left);
+ if (count < 1) {
+ unconv_num++;
+ count = 0;
+ } else {
+ charset = _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ }
+ if (charset == NULL)
+ return -1;
+
+ *from = (XPointer) ++src;
+ (*from_left)--;
+ *to = (XPointer) dst;
+ *to_left -= count;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_ucstocs1 = {
+ close_tocs_converter,
+ ucstocs1,
+ NULL
+};
+
+static XlcConv
+open_ucstocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_ucstocs_conv(from_lcd, &methods_ucstocs1);
+}
+
+/* from XlcNUcsChar to XlcNUtf8String, needed for input methods */
+
+static int
+ucstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const ucs4_t *src;
+ const ucs4_t *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (const ucs4_t *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ)
+ unconv_num++;
+ src++;
+ dst += count;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_ucstoutf8 = {
+ close_converter,
+ ucstoutf8,
+ NULL
+};
+
+static XlcConv
+open_ucstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_ucstoutf8);
+}
+
+/* Registers UTF-8 converters for a non-UTF-8 locale. */
+void
+_XlcAddUtf8Converters(
+ XLCd lcd)
+{
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String, open_cstoutf8);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNCharSet, open_utf8tocs);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNChar, open_utf8tocs1);
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNUtf8String, open_strtoutf8);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNString, open_utf8tostr);
+ _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNChar, open_ucstocs1);
+ _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String, open_ucstoutf8);
+}
+
+/***************************************************************************/
+/* Part II: UTF-8 locale loader conversion files
+ *
+ * Here we can assume that "multi-byte" is UTF-8 and that `wchar_t' is Unicode.
+ */
+
+/* from XlcNMultiByte to XlcNWideChar */
+
+static int
+utf8towcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ wchar_t *dst;
+ wchar_t *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (wchar_t *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ ucs4_t wc;
+ int consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (consumed == RET_ILSEQ) {
+ src++;
+ *dst = BAD_WCHAR;
+ unconv_num++;
+ } else {
+ src += consumed;
+ *dst = wc;
+ }
+ dst++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8towcs = {
+ close_converter,
+ utf8towcs,
+ NULL
+};
+
+static XlcConv
+open_utf8towcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_utf8towcs);
+}
+
+/* from XlcNWideChar to XlcNMultiByte */
+
+static int
+wcstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ count = utf8_wctomb(NULL, dst, BAD_WCHAR, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ unconv_num++;
+ }
+ dst += count;
+ src++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstoutf8 = {
+ close_converter,
+ wcstoutf8,
+ NULL
+};
+
+static XlcConv
+open_wcstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_wcstoutf8);
+}
+
+/* from XlcNString to XlcNWideChar */
+
+static int
+our_strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ wchar_t *dst;
+ wchar_t *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (wchar_t *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend && dst < dstend)
+ *dst++ = (wchar_t) *src++;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec methods_strtowcs = {
+ close_converter,
+ our_strtowcs,
+ NULL
+};
+
+static XlcConv
+open_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_strtowcs);
+}
+
+/* from XlcNWideChar to XlcNString */
+
+static int
+our_wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ unsigned int wc = *src++;
+ if (wc < 0x80)
+ *dst = wc;
+ else {
+ *dst = BAD_CHAR;
+ unconv_num++;
+ }
+ dst++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstostr = {
+ close_converter,
+ our_wcstostr,
+ NULL
+};
+
+static XlcConv
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_wcstostr);
+}
+
+/* from XlcNCharSet to XlcNWideChar */
+
+static int
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XlcCharSet charset;
+ const char *name;
+ Utf8Conv convptr;
+ int i;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ wchar_t *dst;
+ wchar_t *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ if (num_args < 1)
+ return -1;
+
+ charset = (XlcCharSet) args[0];
+ name = charset->encoding_name;
+ /* not charset->name because the latter has a ":GL"/":GR" suffix */
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (!strcmp(convptr->name, name))
+ break;
+ if (i == 0)
+ return -1;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (wchar_t *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ unsigned int wc;
+ int consumed;
+
+ consumed = convptr->cstowc(conv, &wc, src, srcend-src);
+ if (consumed == RET_ILSEQ)
+ return -1;
+ if (consumed == RET_TOOFEW(0))
+ break;
+
+ *dst++ = wc;
+ src += consumed;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_cstowcs = {
+ close_converter,
+ cstowcs,
+ NULL
+};
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ lazy_init_all_charsets();
+ return create_conv(from_lcd, &methods_cstowcs);
+}
+
+/* from XlcNWideChar to XlcNCharSet */
+
+static int
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ wchar_t wc = *src;
+ int count;
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src++;
+ dst += count;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstocs = {
+ close_tocs_converter,
+ wcstocs,
+ NULL
+};
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_wcstocs);
+}
+
+/* from XlcNWideChar to XlcNChar */
+
+static int
+wcstocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ wchar_t wc = *src;
+ int count;
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src++;
+ dst += count;
+ break;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstocs1 = {
+ close_tocs_converter,
+ wcstocs1,
+ NULL
+};
+
+static XlcConv
+open_wcstocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_wcstocs1);
+}
+
+/* trivial, no conversion */
+
+static int
+identity(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend && dst < dstend)
+ *dst++ = *src++;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec methods_identity = {
+ close_converter,
+ identity,
+ NULL
+};
+
+static XlcConv
+open_identity(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_identity);
+}
+
+/* from MultiByte/WideChar to FontCharSet. */
+/* They really use converters to CharSet
+ * but with different create_conv procedure. */
+
+static XlcConv
+create_tofontcs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+ int i, num, k, count;
+ char **value, buf[20];
+ Utf8Conv *preferred;
+
+ lazy_init_all_charsets();
+
+ for (i = 0, num = 0;; i++) {
+ sprintf(buf, "fs%d.charset.name", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1) {
+ sprintf(buf, "fs%d.charset", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1)
+ break;
+ }
+ num += count;
+ }
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + (num + 1) * sizeof(Utf8Conv));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
+
+ /* Loop through all fontsets mentioned in the locale. */
+ for (i = 0, num = 0;; i++) {
+ sprintf(buf, "fs%d.charset.name", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1) {
+ sprintf(buf, "fs%d.charset", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1)
+ break;
+ }
+ while (count-- > 0) {
+ XlcCharSet charset = _XlcGetCharSet(*value++);
+ const char *name = charset->encoding_name;
+ /* If it wasn't already encountered... */
+ for (k = num - 1; k >= 0; k--)
+ if (!strcmp(preferred[k]->name, name))
+ break;
+ if (k < 0) {
+ /* For fonts "ISO10646-1" means not utf8 but ucs2.*/
+ if (!strcmp("ISO10646-1", name)) {
+ preferred[num++] = &all_charsets[ucs2_conv_index];
+ continue;
+ }
+ /* Look it up in all_charsets[]. */
+ for (k = 0; k < all_charsets_count-1; k++)
+ if (!strcmp(all_charsets[k].name, name)) {
+ /* Add it to the preferred set. */
+ preferred[num++] = &all_charsets[k];
+ break;
+ }
+ }
+ }
+ }
+ preferred[num] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+}
+
+static XlcConv
+open_wcstofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &methods_wcstocs);
+}
+
+static XlcConv
+open_utf8tofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &methods_utf8tocs);
+}
+
+/* Registers UTF-8 converters for a UTF-8 locale. */
+
+void
+_XlcAddUtf8LocaleConverters(
+ XLCd lcd)
+{
+ /* Register elementary converters. */
+
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_utf8towcs);
+
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstoutf8);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr);
+
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
+
+ /* Register converters for XlcNCharSet. This implicitly provides
+ * converters from and to XlcNCompoundText. */
+
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstoutf8);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_utf8tocs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_utf8tocs1);
+
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wcstocs1);
+
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtoutf8);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_utf8tostr);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNMultiByte, open_identity);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String, open_identity);
+
+ /* Register converters for XlcNFontCharSet */
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNFontCharSet, open_utf8tofcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNFontCharSet, open_wcstofcs);
+}
diff --git a/src/xlibi18n/lcUniConv/8bit_tab_to_h.c b/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
new file mode 100644
index 00000000..1d794841
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
@@ -0,0 +1,536 @@
+/* $XFree86: xc/lib/X11/lcUniConv/8bit_tab_to_h.c,v 1.3 2001/02/09 00:02:54 dawes Exp $ */
+
+/*
+ * Generates an 8-bit character set table from a .TXT table as found on
+ * ftp.unicode.org or from a table containing the 256 Unicode values as
+ * hexadecimal integers.
+ * Examples:
+ *
+ * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < tab8859_1
+ * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < tab8859_2
+ * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < tab8859_3
+ * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < tab8859_4
+ * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < tab8859_5
+ * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < tab8859_6
+ * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < tab8859_7
+ * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < tab8859_8
+ * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < tab8859_9
+ * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < tab8859_10
+ * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < tab8859_14
+ * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < tab8859_15
+ * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < jis0201
+ * ./8bit_tab_to_h TIS620-0 tis620 < tabtis620
+ * ./8bit_tab_to_h KOI8-R koi8_r < tabkoi8_r
+ * ./8bit_tab_to_h KOI8-U koi8_u < tabkoi8_u
+ * ./8bit_tab_to_h ARMSCII-8 armscii_8 < tabarmscii_8
+ * ./8bit_tab_to_h CP1133 cp1133 < tabibm_cp1133
+ * ./8bit_tab_to_h MULELAO-1 mulelao < tabmulelao_1
+ * ./8bit_tab_to_h VISCII1.1-1 viscii1 < tabviscii
+ * ./8bit_tab_to_h TCVN-5712 tcvn < tabtcvn
+ * ./8bit_tab_to_h GEORGIAN-ACADEMY georgian_ac < tabgeorgian_academy
+ * ./8bit_tab_to_h GEORGIAN-PS georgian_ps < tabgeorgian_ps
+ *
+ * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < 8859-1.TXT
+ * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < 8859-2.TXT
+ * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < 8859-3.TXT
+ * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < 8859-4.TXT
+ * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < 8859-5.TXT
+ * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < 8859-6.TXT
+ * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < 8859-7.TXT
+ * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < 8859-8.TXT
+ * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < 8859-9.TXT
+ * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < 8859-10.TXT
+ * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < 8859-14.TXT
+ * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < 8859-15.TXT
+ * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < JIS0201.TXT
+ * ./8bit_tab_to_h KOI8-R koi8_r < KOI8-R.TXT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+int main (int argc, char *argv[])
+{
+ const char* charsetname;
+ const char* c_charsetname;
+ const char* filename;
+ const char* directory;
+ int charset2uni[0x100];
+
+ if (argc != 3 && argc != 4 && argc != 5)
+ exit(1);
+ charsetname = argv[1];
+ c_charsetname = argv[2];
+ if (argc > 3) {
+ filename = argv[3];
+ } else {
+ char* s = (char*) malloc(strlen(c_charsetname)+strlen(".h")+1);
+ strcpy(s,c_charsetname); strcat(s,".h");
+ filename = s;
+ }
+ directory = (argc > 4 ? argv[4] : "");
+
+ fprintf(stderr, "Creating %s%s\n", directory, filename);
+
+ {
+ int i, c;
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (i = 0; i < 0x100; i++)
+ charset2uni[i] = 0xfffd;
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
+ exit(1);
+ do { c = getc(stdin); } while (c == ' ' || c == '\t');
+ if (c != EOF)
+ ungetc(c,stdin);
+ if (c == '\n' || c == '#')
+ continue;
+ if (scanf("0x%x", &charset2uni[i]) != 1)
+ exit(1);
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i = 0; i < 0x100; i++) {
+ if (scanf("%x", &charset2uni[i]) != 1)
+ exit(1);
+ if (charset2uni[i] < 0 || charset2uni[i] == 0xffff)
+ charset2uni[i] = 0xfffd;
+ }
+ if (scanf("%x", &i) != EOF)
+ exit(1);
+ }
+ }
+
+ /* Write the output file. */
+ {
+ FILE* f;
+
+ {
+ char* fname = malloc(strlen(directory)+strlen(filename)+1);
+ strcpy(fname,directory); strcat(fname,filename);
+ f = fopen(fname,"w");
+ if (f == NULL)
+ exit(1);
+ }
+
+ fprintf(f, "\n");
+ fprintf(f, "/*\n");
+ fprintf(f, " * %s\n", charsetname);
+ fprintf(f, " */\n");
+ fprintf(f, "\n");
+
+ {
+ int i, i1, i2, i3;
+ int line[16];
+ int tableno;
+ struct { int minline; int maxline; } tables[16];
+ bool some_invalid;
+ bool final_ret_reached;
+
+ for (i1 = 0; i1 < 16; i1++) {
+ bool all_invalid = true;
+ bool all_identity = true;
+ for (i2 = 0; i2 < 16; i2++) {
+ i = 16*i1+i2;
+ if (charset2uni[i] != 0xfffd)
+ all_invalid = false;
+ if (charset2uni[i] != i)
+ all_identity = false;
+ }
+ if (all_invalid)
+ line[i1] = -2;
+ else if (all_identity)
+ line[i1] = -1;
+ else
+ line[i1] = 0;
+ }
+ tableno = 0;
+ for (i1 = 0; i1 < 16; i1++) {
+ if (line[i1] >= 0) {
+ if (i1 > 0 && tableno > 0 && line[i1-1] == tableno-1) {
+ line[i1] = tableno-1;
+ tables[tableno-1].maxline = i1;
+ } else {
+ tableno++;
+ line[i1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = i1;
+ }
+ }
+ }
+ some_invalid = false;
+ for (i = 0; i < 0x100; i++)
+ if (charset2uni[i] == 0xfffd)
+ some_invalid = true;
+ if (tableno > 0) {
+ int t;
+ for (t = 0; t < tableno; t++) {
+ fprintf(f, "static const unsigned short %s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[%d] = {\n", 16*(tables[t].maxline-tables[t].minline+1));
+ for (i1 = tables[t].minline; i1 <= tables[t].maxline; i1++) {
+ fprintf(f, " /* 0x%02x */\n", 16*i1);
+ for (i2 = 0; i2 < 2; i2++) {
+ fprintf(f, " ");
+ for (i3 = 0; i3 < 8; i3++) {
+ i = 16*i1+8*i2+i3;
+ fprintf(f, " 0x%04x,", charset2uni[i]);
+ }
+ fprintf(f, "\n");
+ }
+ }
+ fprintf(f, "};\n");
+ }
+ fprintf(f, "\n");
+ }
+ final_ret_reached = false;
+ fprintf(f, "static int\n%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", c_charsetname);
+ fprintf(f, "{\n");
+ fprintf(f, " unsigned char c = *s;\n");
+ if (some_invalid) {
+ for (i1 = 0; i1 < 16;) {
+ int t = line[i1];
+ const char* indent;
+ for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
+ indent = (i1 == 0 && i2 == 16 ? " " : " ");
+ if (i1 == 0) {
+ if (i2 == 16) {
+ } else {
+ fprintf(f, " if (c < 0x%02x) {\n", 16*i2);
+ }
+ } else {
+ if (i2 == 16) {
+ fprintf(f, " else {\n");
+ } else {
+ fprintf(f, " else if (c < 0x%02x) {\n", 16*i2);
+ }
+ }
+ if (t == -2) {
+ final_ret_reached = true;
+ } else if (t == -1) {
+ fprintf(f, "%s*pwc = (ucs4_t) c;\n", indent);
+ fprintf(f, "%sreturn 1;\n", indent);
+ } else {
+ fprintf(f, "%s", indent);
+ some_invalid = false;
+ for (i = 16*i1; i < 16*i2; i++)
+ if (charset2uni[i] == 0xfffd)
+ some_invalid = true;
+ if (some_invalid)
+ fprintf(f, "unsigned short wc = ");
+ else
+ fprintf(f, "*pwc = (ucs4_t) ");
+ fprintf(f, "%s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[c");
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%02x", 16*tables[t].minline);
+ fprintf(f, "];\n");
+ if (some_invalid) {
+ fprintf(f, "%sif (wc != 0xfffd) {\n", indent);
+ fprintf(f, "%s *pwc = (ucs4_t) wc;\n", indent);
+ fprintf(f, "%s return 1;\n", indent);
+ fprintf(f, "%s}\n", indent);
+ final_ret_reached = true;
+ } else {
+ fprintf(f, "%sreturn 1;\n", indent);
+ }
+ }
+ if (!(i1 == 0 && i2 == 16))
+ fprintf(f, " }\n");
+ i1 = i2;
+ }
+ if (final_ret_reached)
+ fprintf(f, " return RET_ILSEQ;\n");
+ } else {
+ for (i1 = 0; i1 < 16;) {
+ int t = line[i1];
+ for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
+ if (i1 == 0) {
+ if (i2 == 16) {
+ fprintf(f, " ");
+ } else {
+ fprintf(f, " if (c < 0x%02x)\n ", 16*i2);
+ }
+ } else {
+ if (i2 == 16) {
+ fprintf(f, " else\n ");
+ } else {
+ fprintf(f, " else if (c < 0x%02x)\n ", 16*i2);
+ }
+ }
+ if (t == -1)
+ fprintf(f, "*pwc = (ucs4_t) c;\n");
+ else {
+ fprintf(f, "*pwc = (ucs4_t) %s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[c");
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%02x", 16*tables[t].minline);
+ fprintf(f, "];\n");
+ }
+ i1 = i2;
+ }
+ fprintf(f, " return 1;\n");
+ }
+ fprintf(f, "}\n");
+
+ }
+
+ fprintf(f, "\n");
+
+ {
+ int uni2charset[0x10000];
+ bool pages[0x100];
+ int line[0x2000];
+ int tableno;
+ struct { int minline; int maxline; int usecount; const char* suffix; } tables[0x2000];
+ bool need_c;
+ bool fix_0000;
+ int i, j, p, j1, j2, t;
+
+ for (j = 0; j < 0x10000; j++)
+ uni2charset[j] = 0;
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (i = 0; i < 0x100; i++) {
+ j = charset2uni[i];
+ if (j != 0xfffd) {
+ uni2charset[j] = i;
+ pages[j>>8] = true;
+ }
+ }
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ bool all_invalid = true;
+ bool all_identity = true;
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ if (uni2charset[j] != 0)
+ all_invalid = false;
+ if (uni2charset[j] != j)
+ all_identity = false;
+ }
+ if (all_invalid)
+ line[j1] = -2;
+ else if (all_identity)
+ line[j1] = -1;
+ else
+ line[j1] = 0;
+ }
+ tableno = 0;
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ if (line[j1] >= 0) {
+ if (tableno > 0
+ && ((j1 > 0 && line[j1-1] == tableno-1)
+ || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
+ && j1 - tables[tableno-1].maxline <= 8))) {
+ line[j1] = tableno-1;
+ tables[tableno-1].maxline = j1;
+ } else {
+ tableno++;
+ line[j1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = j1;
+ }
+ }
+ }
+ for (t = 0; t < tableno; t++) {
+ tables[t].usecount = 0;
+ j1 = 8*tables[t].minline;
+ j2 = 8*(tables[t].maxline+1);
+ for (j = j1; j < j2; j++)
+ if (uni2charset[j] != 0)
+ tables[t].usecount++;
+ }
+ for (t = 0, p = -1, i = 0; t < tableno; t++) {
+ if (tables[t].usecount > 1) {
+ char* s;
+ if (p == tables[t].minline >> 5) {
+ s = (char*) malloc(5+1);
+ sprintf(s, "%02x_%d", p, ++i);
+ } else {
+ p = tables[t].minline >> 5;
+ s = (char*) malloc(2+1);
+ sprintf(s, "%02x", p);
+ }
+ tables[t].suffix = s;
+ } else
+ tables[t].suffix = NULL;
+ }
+ {
+ p = -1;
+ for (t = 0; t < tableno; t++)
+ if (tables[t].usecount > 1) {
+ p = 0;
+ fprintf(f, "static const unsigned char %s_page%s[%d] = {\n", c_charsetname, tables[t].suffix, 8*(tables[t].maxline-tables[t].minline+1));
+ for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
+ if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
+ fprintf(f, " /* 0x%04x */\n", 8*j1);
+ fprintf(f, " ");
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ fprintf(f, " 0x%02x,", uni2charset[j]);
+ }
+ fprintf(f, " /* 0x%02x-0x%02x */\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
+ }
+ fprintf(f, "};\n");
+ }
+ if (p >= 0)
+ fprintf(f, "\n");
+ }
+ need_c = false;
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0)
+ j2 = tables[t].maxline+1;
+ if (!(t == -2 || (t == -1 && j1 == 0)))
+ need_c = true;
+ j1 = j2;
+ }
+ fix_0000 = false;
+ fprintf(f, "static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", c_charsetname);
+ fprintf(f, "{\n");
+ if (need_c)
+ fprintf(f, " unsigned char c = 0;\n");
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0) {
+ if (j1 != tables[t].minline) abort();
+ if (j2 > tables[t].maxline+1) abort();
+ j2 = tables[t].maxline+1;
+ }
+ if (t == -2) {
+ } else {
+ if (j1 == 0)
+ fprintf(f, " ");
+ else
+ fprintf(f, " else ");
+ if (t >= 0 && tables[t].usecount == 0) abort();
+ if (t >= 0 && tables[t].usecount == 1) {
+ if (j2 != j1+1) abort();
+ for (j = 8*j1; j < 8*j2; j++)
+ if (uni2charset[j] != 0) {
+ fprintf(f, "if (wc == 0x%04x)\n c = 0x%02x;\n", j, uni2charset[j]);
+ break;
+ }
+ } else {
+ if (j1 == 0) {
+ fprintf(f, "if (wc < 0x%04x)", 8*j2);
+ } else {
+ fprintf(f, "if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
+ }
+ if (t == -1) {
+ if (j1 == 0)
+ /* If wc == 0, the function must return 1, not -1. */
+ fprintf(f, " {\n *r = wc;\n return 1;\n }\n");
+ else
+ fprintf(f, "\n c = wc;\n");
+ } else {
+ fprintf(f, "\n c = %s_page%s[wc", c_charsetname, tables[t].suffix);
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%04x", 8*j1);
+ fprintf(f, "];\n");
+ if (j1 == 0 && uni2charset[0] == 0)
+ /* If wc == 0, the function must return 1, not -1. */
+ fix_0000 = true;
+ }
+ }
+ }
+ j1 = j2;
+ }
+ if (need_c) {
+ if (fix_0000)
+ fprintf(f, " if (c != 0 || wc == 0) {\n");
+ else
+ fprintf(f, " if (c != 0) {\n");
+ fprintf(f, " *r = c;\n");
+ fprintf(f, " return 1;\n");
+ fprintf(f, " }\n");
+ }
+ fprintf(f, " return RET_ILSEQ;\n");
+ fprintf(f, "}\n");
+
+ }
+
+ if (ferror(f) || fclose(f))
+ exit(1);
+ }
+
+#if 0
+
+ int i1, i2, i3, i1_min, i1_max, j1, j2;
+
+ i1_min = 16;
+ i1_max = -1;
+ for (i1 = 0; i1 < 16; i1++)
+ for (i2 = 0; i2 < 16; i2++)
+ if (charset2uni[16*i1+i2] != 0xfffd) {
+ if (i1_min > i1) i1_min = i1;
+ if (i1_max < i1) i1_max = i1;
+ }
+ printf("static const unsigned short %s_2uni[%d] = {\n",
+ name, 16*(i1_max-i1_min+1));
+ for (i1 = i1_min; i1 <= i1_max; i1++) {
+ printf(" /""* 0x%02x *""/\n", 16*i1);
+ for (i2 = 0; i2 < 2; i2++) {
+ printf(" ");
+ for (i3 = 0; i3 < 8; i3++) {
+ if (i3 > 0) printf(" ");
+ printf("0x%04x,", charset2uni[16*i1+8*i2+i3]);
+ }
+ printf("\n");
+ }
+ }
+ printf("};\n");
+ printf("\n");
+
+ for (p = 0; p < 0x100; p++)
+ pages[p] = 0;
+ for (i = 0; i < 0x100; i++)
+ if (charset2uni[i] != 0xfffd)
+ pages[charset2uni[i]>>8] = 1;
+ for (p = 0; p < 0x100; p++)
+ if (pages[p]) {
+ int j1_min = 32;
+ int j1_max = -1;
+ for (j1 = 0; j1 < 32; j1++)
+ for (j2 = 0; j2 < 8; j2++)
+ if (uni2charset[256*p+8*j1+j2] != 0) {
+ if (j1_min > j1) j1_min = j1;
+ if (j1_max < j1) j1_max = j1;
+ }
+ printf("static const unsigned char %s_page%02x[%d] = {\n",
+ name, p, 8*(j1_max-j1_min+1));
+ for (j1 = j1_min; j1 <= j1_max; j1++) {
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++)
+ printf("0x%02x, ", uni2charset[256*p+8*j1+j2]);
+ printf("/""* 0x%02x-0x%02x *""/\n", 8*j1, 8*j1+7);
+ }
+ printf("};\n");
+ }
+ printf("\n");
+
+}
+#endif
+
+ exit(0);
+}
diff --git a/src/xlibi18n/lcUniConv/COPYRIGHT b/src/xlibi18n/lcUniConv/COPYRIGHT
new file mode 100644
index 00000000..ccc16266
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/COPYRIGHT
@@ -0,0 +1,39 @@
+This notice applies to the files in this directory. They are taken from
+the libiconv-1.1 package, which is covered by the LGPL license. The files
+in this directory have been placed under the following copyright, with
+permission from the Free Software Foundation.
+
+
+Copyright (c) 1999-2000 Free Software Foundation, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the Free Software Foundation
+shall not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization from the
+Free Software Foundation.
+
+
+Notes:
+
+1. This copyright applies only to the files in this directory, and not to
+the remaining files in libiconv.
+
+2. The Free Software Foundation does not encourage the use of the above
+license for newly written software.
+
diff --git a/src/xlibi18n/lcUniConv/README b/src/xlibi18n/lcUniConv/README
new file mode 100644
index 00000000..844f090b
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/README
@@ -0,0 +1,10 @@
+The files in this directory are taken from the libiconv-1.1 package.
+
+The *.h files were generated from tables (mostly from ftp.unicode.org) using
+the programs '8bit_tab_to_h.c' and 'cjk_tab_to_h.c'. On some of them, further
+optimizations were applied by hand.
+
+If you find a bug in these files, instead of modifying them in XFree86
+and let it diverge from libiconv, please notify the libiconv maintainer
+(currently <haible@clisp.cons.org>) so he can fix both in synch.
+
diff --git a/src/xlibi18n/lcUniConv/armscii_8.h b/src/xlibi18n/lcUniConv/armscii_8.h
new file mode 100644
index 00000000..32b4e9c5
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/armscii_8.h
@@ -0,0 +1,94 @@
+/* $XFree86: xc/lib/X11/lcUniConv/armscii_8.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
+
+/*
+ * ARMSCII-8
+ */
+
+static const unsigned short armscii_8_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x2741, 0x00a7, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab,
+ 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x055f, 0x2026, 0x055c,
+ /* 0xb0 */
+ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
+ 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
+ /* 0xc0 */
+ 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
+ 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
+ /* 0xd0 */
+ 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
+ 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
+ /* 0xe0 */
+ 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
+ 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
+ /* 0xf0 */
+ 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
+ 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x2019, 0x0027,
+};
+
+static int
+armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) armscii_8_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char armscii_8_page00[16] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0xff, /* 0x20-0x27 */
+ 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */
+};
+static const unsigned char armscii_8_page00_1[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char armscii_8_page05[96] = {
+ 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */
+ 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */
+ 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */
+ 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */
+ 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0xb0, 0xaf, 0xaa, 0xb1, 0xad, /* 0x58-0x5f */
+ 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */
+ 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */
+ 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */
+ 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */
+ 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0x00, /* 0x80-0x87 */
+ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+};
+static const unsigned char armscii_8_page20[24] = {
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */
+};
+
+static int
+armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0020) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0020 && wc < 0x0030)
+ c = armscii_8_page00[wc-0x0020];
+ else if (wc >= 0x0030 && wc < 0x00a0)
+ c = wc;
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = armscii_8_page00_1[wc-0x00a0];
+ else if (wc >= 0x0530 && wc < 0x0590)
+ c = armscii_8_page05[wc-0x0530];
+ else if (wc >= 0x2010 && wc < 0x2028)
+ c = armscii_8_page20[wc-0x2010];
+ else if (wc == 0x2741)
+ c = 0xa1;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/ascii.h b/src/xlibi18n/lcUniConv/ascii.h
new file mode 100644
index 00000000..183de0bb
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/ascii.h
@@ -0,0 +1,26 @@
+/* $XFree86: xc/lib/X11/lcUniConv/ascii.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
+
+/*
+ * ASCII
+ */
+
+static int
+ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
+
+static int
+ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/big5.h b/src/xlibi18n/lcUniConv/big5.h
new file mode 100644
index 00000000..83e5f400
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/big5.h
@@ -0,0 +1,4142 @@
+/* $XFree86: xc/lib/X11/lcUniConv/big5.h,v 1.1 2000/11/28 18:50:03 dawes Exp $ */
+
+/*
+ * BIG5
+ */
+
+static const unsigned short big5_2uni_pagea1[6121] = {
+ /* 0xa1 */
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
+ 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
+ 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
+ 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
+ 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
+ 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
+ 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
+ 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
+ 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
+ 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+ 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd,
+ /* 0xa2 */
+ 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
+ 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
+ 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
+ 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 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,
+ /* 0xa3 */
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa4 */
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
+ 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
+ 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
+ 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
+ 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
+ 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
+ 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
+ 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
+ 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
+ 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
+ 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
+ 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ /* 0xa5 */
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
+ 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
+ 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
+ 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
+ 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
+ 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
+ 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
+ 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
+ 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
+ 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* 0xa6 */
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
+ 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
+ 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
+ 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
+ 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
+ 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
+ 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
+ 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
+ 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
+ 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
+ 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
+ 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
+ /* 0xa7 */
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
+ 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
+ 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
+ 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
+ 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
+ 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
+ 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
+ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
+ 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
+ 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
+ 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
+ /* 0xa8 */
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
+ 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
+ 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
+ 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
+ 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
+ 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
+ 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
+ 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
+ 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
+ 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
+ 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
+ /* 0xa9 */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
+ 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
+ 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
+ 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
+ 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
+ 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
+ 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
+ 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
+ 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
+ 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
+ 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
+ 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
+ /* 0xaa */
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
+ 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
+ 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
+ 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
+ 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
+ 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
+ 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
+ 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
+ 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
+ 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
+ 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
+ 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
+ /* 0xab */
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
+ 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
+ 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
+ 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
+ 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
+ 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
+ 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
+ 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
+ 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
+ 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
+ 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
+ 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
+ /* 0xac */
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
+ 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
+ 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
+ 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
+ 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
+ 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
+ 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
+ 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
+ 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
+ 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
+ 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
+ /* 0xad */
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
+ 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
+ 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
+ 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
+ 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
+ 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
+ 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
+ 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
+ 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
+ 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
+ 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
+ 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
+ /* 0xae */
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
+ 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
+ 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
+ 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
+ 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
+ 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
+ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
+ 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
+ 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
+ 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
+ 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
+ /* 0xaf */
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
+ 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
+ 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
+ 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
+ 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
+ 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
+ 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
+ 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
+ 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
+ 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
+ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* 0xb0 */
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
+ 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
+ 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
+ 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
+ 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
+ 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
+ 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
+ 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
+ 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
+ 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
+ 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
+ /* 0xb1 */
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
+ 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
+ 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
+ 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
+ 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
+ 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
+ 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
+ 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
+ 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
+ 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
+ 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
+ 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
+ /* 0xb2 */
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
+ 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
+ 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
+ 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
+ 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
+ 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
+ 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
+ 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
+ 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
+ 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
+ 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
+ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
+ /* 0xb3 */
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
+ 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
+ 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
+ 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
+ 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
+ 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
+ 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
+ 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
+ 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
+ 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
+ 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
+ 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
+ /* 0xb4 */
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
+ 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
+ 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
+ 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
+ 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
+ 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
+ 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
+ 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
+ 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
+ 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
+ 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
+ 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
+ /* 0xb5 */
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
+ 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
+ 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
+ 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
+ 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
+ 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
+ 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
+ 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
+ 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
+ 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
+ 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
+ /* 0xb6 */
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
+ 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
+ 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
+ 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
+ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
+ 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
+ 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
+ 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
+ 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
+ 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
+ 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
+ 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ /* 0xb7 */
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
+ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
+ 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
+ 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
+ 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
+ 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
+ 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
+ 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
+ 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
+ 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
+ /* 0xb8 */
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
+ 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
+ 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
+ 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
+ 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
+ 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
+ 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
+ 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
+ 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
+ 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
+ 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
+ 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
+ /* 0xb9 */
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
+ 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
+ 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
+ 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
+ 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
+ 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
+ 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
+ 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
+ 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
+ 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
+ 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
+ /* 0xba */
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
+ 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
+ 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
+ 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
+ 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
+ 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
+ 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
+ 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
+ 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
+ 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
+ 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
+ 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
+ /* 0xbb */
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
+ 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
+ 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
+ 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
+ 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
+ 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
+ 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
+ 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
+ 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
+ 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
+ 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
+ /* 0xbc */
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
+ 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
+ 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
+ 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
+ 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
+ 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
+ 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
+ 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
+ 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
+ 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
+ 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
+ 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
+ /* 0xbd */
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
+ 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
+ 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
+ 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
+ 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
+ 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
+ 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
+ 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
+ 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
+ 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
+ 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
+ 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
+ /* 0xbe */
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
+ 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
+ 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
+ 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
+ 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
+ 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
+ 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
+ 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
+ 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
+ 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
+ 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
+ /* 0xbf */
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
+ 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
+ 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
+ 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
+ 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
+ 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
+ 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
+ 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
+ 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
+ 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
+ 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
+ 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ /* 0xc0 */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
+ 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
+ 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
+ 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
+ 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
+ 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
+ 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
+ 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
+ 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
+ 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
+ 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
+ /* 0xc1 */
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
+ 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
+ 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
+ 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
+ 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
+ 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
+ 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
+ 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
+ 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
+ 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
+ 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
+ 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ /* 0xc2 */
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
+ 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
+ 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
+ 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
+ 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
+ 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
+ 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
+ 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
+ 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
+ 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
+ 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
+ /* 0xc3 */
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
+ 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
+ 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
+ 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
+ 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
+ 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
+ 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
+ 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
+ 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
+ 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
+ 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
+ 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
+ /* 0xc4 */
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
+ 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
+ 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
+ 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
+ 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
+ 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
+ 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
+ 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
+ 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
+ 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
+ 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
+ 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
+ /* 0xc5 */
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
+ 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
+ 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
+ 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
+ 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
+ 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
+ 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
+ 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
+ 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
+ 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
+ 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
+ /* 0xc6 */
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe,
+ 0x309d, 0x309e, 0x3005, 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, 0x30a1, 0x30a2,
+ 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ /* 0xc7 */
+ 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, 0x0414,
+ 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b,
+ 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431,
+ 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438,
+ 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440,
+ 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
+ 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d,
+};
+static const unsigned short big5_2uni_pagec9[7652] = {
+ /* 0xc9 */
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
+ 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
+ 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
+ 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
+ 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
+ 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
+ 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
+ 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
+ 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+ 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
+ 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
+ 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
+ /* 0xca */
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
+ 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
+ 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
+ 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
+ 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
+ 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
+ 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
+ 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
+ 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
+ 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
+ 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
+ /* 0xcb */
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
+ 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
+ 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
+ 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
+ 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
+ 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
+ 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
+ 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
+ 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
+ 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
+ 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
+ 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ /* 0xcc */
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
+ 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
+ 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
+ 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
+ 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
+ 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
+ 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
+ 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
+ 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
+ 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
+ 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
+ /* 0xcd */
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
+ 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
+ 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
+ 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
+ 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
+ 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
+ 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
+ 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
+ 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
+ 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
+ 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
+ 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
+ /* 0xce */
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
+ 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
+ 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
+ 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
+ 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
+ 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
+ 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
+ 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
+ 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
+ /* 0xcf */
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
+ 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
+ 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
+ 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
+ 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
+ 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
+ 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
+ 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
+ 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
+ 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
+ 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
+ /* 0xd0 */
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
+ 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
+ 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
+ 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
+ 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
+ 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
+ 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
+ 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
+ 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
+ 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
+ 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
+ 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
+ /* 0xd1 */
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
+ 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
+ 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
+ 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
+ 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
+ 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
+ 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
+ 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
+ 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
+ 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
+ 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
+ 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
+ /* 0xd2 */
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
+ 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
+ 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
+ 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
+ 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
+ 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
+ 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
+ 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
+ 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
+ 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
+ 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
+ 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
+ /* 0xd3 */
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
+ 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
+ 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
+ 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
+ 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
+ 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
+ 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
+ 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
+ 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
+ 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
+ /* 0xd4 */
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
+ 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
+ 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
+ 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
+ 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
+ 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
+ 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
+ 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
+ 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
+ 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
+ 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
+ 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ /* 0xd5 */
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
+ 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
+ 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
+ 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
+ 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
+ 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
+ 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
+ 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
+ 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
+ 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
+ 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
+ /* 0xd6 */
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
+ 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
+ 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
+ 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
+ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
+ 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
+ 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
+ 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
+ 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
+ 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
+ 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
+ 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
+ /* 0xd7 */
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
+ 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
+ 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
+ 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
+ 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
+ 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
+ 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
+ 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
+ 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
+ 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
+ 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
+ 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
+ /* 0xd8 */
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
+ 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
+ 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
+ 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
+ 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
+ 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
+ 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
+ 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
+ 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
+ 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
+ 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
+ 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
+ /* 0xd9 */
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
+ 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
+ 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
+ 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
+ 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
+ 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
+ 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
+ 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
+ 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
+ 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
+ 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
+ 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
+ /* 0xda */
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
+ 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
+ 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
+ 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
+ 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
+ 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
+ 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
+ 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
+ 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
+ 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
+ /* 0xdb */
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
+ 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
+ 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
+ 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
+ 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
+ 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
+ 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
+ 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
+ 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
+ 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
+ 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
+ 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
+ /* 0xdc */
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
+ 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
+ 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
+ 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
+ 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
+ 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
+ 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
+ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
+ 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
+ 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
+ /* 0xdd */
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
+ 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
+ 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
+ 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
+ 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
+ 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
+ 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
+ 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
+ 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
+ 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
+ /* 0xde */
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
+ 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
+ 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
+ 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
+ 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
+ 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
+ 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
+ 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
+ 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
+ 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
+ /* 0xdf */
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
+ 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
+ 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
+ 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
+ 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
+ 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
+ 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
+ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
+ 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
+ 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
+ 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
+ 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
+ /* 0xe0 */
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
+ 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
+ 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
+ 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
+ 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
+ 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
+ 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
+ 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
+ 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
+ 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
+ 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
+ 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
+ /* 0xe1 */
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
+ 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
+ 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
+ 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
+ 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
+ 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
+ 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
+ 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
+ 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
+ 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
+ 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
+ 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
+ /* 0xe2 */
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
+ 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
+ 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
+ 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
+ 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
+ 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
+ 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
+ 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
+ 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
+ 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
+ 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
+ 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* 0xe3 */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
+ 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
+ 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
+ 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
+ 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
+ 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
+ 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
+ 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
+ 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
+ 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
+ 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
+ /* 0xe4 */
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
+ 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
+ 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
+ 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
+ 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
+ 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
+ 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
+ 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
+ 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
+ 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
+ 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
+ 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ /* 0xe5 */
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
+ 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
+ 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
+ 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
+ 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
+ 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
+ 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
+ 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
+ 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
+ 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
+ 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
+ /* 0xe6 */
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
+ 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
+ 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
+ 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
+ 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
+ 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
+ 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
+ 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
+ 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
+ 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
+ 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
+ /* 0xe7 */
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
+ 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
+ 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
+ 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
+ 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
+ 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
+ 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
+ 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
+ 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
+ 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
+ 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
+ /* 0xe8 */
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
+ 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
+ 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
+ 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
+ 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
+ 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
+ 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
+ 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
+ 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
+ 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
+ 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
+ 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
+ /* 0xe9 */
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
+ 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
+ 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
+ 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
+ 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
+ 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
+ 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
+ 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
+ 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
+ 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
+ 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
+ /* 0xea */
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
+ 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
+ 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
+ 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
+ 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
+ 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
+ 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
+ 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
+ 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
+ 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
+ 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
+ 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
+ /* 0xeb */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
+ 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
+ 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
+ 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
+ 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
+ 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
+ 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
+ 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
+ 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
+ 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
+ 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
+ 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
+ /* 0xec */
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
+ 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
+ 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
+ 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
+ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
+ 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
+ 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
+ 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
+ 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
+ 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
+ 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
+ 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
+ /* 0xed */
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
+ 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
+ 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
+ 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
+ 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
+ 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
+ 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
+ 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
+ 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
+ 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
+ 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
+ /* 0xee */
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
+ 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
+ 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
+ 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
+ 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
+ 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
+ 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
+ 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
+ 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
+ /* 0xef */
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
+ 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
+ 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
+ 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
+ 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
+ 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
+ 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
+ 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
+ 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
+ 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
+ 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
+ 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ /* 0xf0 */
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
+ 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
+ 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
+ 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
+ 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
+ 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
+ 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
+ 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
+ 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
+ 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
+ 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
+ /* 0xf1 */
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
+ 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
+ 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
+ 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
+ 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
+ 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
+ 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
+ 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
+ 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
+ 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
+ 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
+ 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
+ /* 0xf2 */
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
+ 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
+ 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
+ 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
+ 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
+ 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
+ 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
+ 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
+ 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
+ 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
+ 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
+ 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
+ /* 0xf3 */
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
+ 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
+ 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
+ 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
+ 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
+ 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
+ 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
+ 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
+ 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
+ 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
+ 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
+ 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
+ /* 0xf4 */
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
+ 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
+ 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
+ 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
+ 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
+ 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
+ 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
+ 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
+ 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
+ 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
+ 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
+ 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
+ /* 0xf5 */
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
+ 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
+ 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
+ 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
+ 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
+ 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
+ 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
+ 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
+ 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
+ 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
+ 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
+ /* 0xf6 */
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
+ 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
+ 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
+ 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
+ 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
+ 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
+ 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
+ 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
+ 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
+ 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
+ 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ /* 0xf7 */
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
+ 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
+ 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
+ 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
+ 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
+ 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
+ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
+ 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
+ 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
+ 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
+ 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
+ /* 0xf8 */
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
+ 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
+ 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
+ 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
+ 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
+ 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
+ 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
+ 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
+ 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
+ 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
+ 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
+ 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
+ /* 0xf9 */
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
+ 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
+ 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
+ 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
+ 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
+ 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
+ 0x9ea4, 0x9f7e, 0x9f49, 0x9f98,
+};
+
+static int
+big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ unsigned short wc = 0xfffd;
+ if (i < 6280) {
+ if (i < 6121)
+ wc = big5_2uni_pagea1[i];
+ } else {
+ if (i < 13932)
+ wc = big5_2uni_pagec9[i-6280];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short big5_2charset[13703] = {
+ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1,
+ 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 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, 0xc7b3, 0xc7b1,
+ 0xc7b2, 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, 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, 0xc7ce, 0xa156, 0xa158,
+ 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac,
+ 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba,
+ 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
+ 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa,
+ 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
+ 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd,
+ 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
+ 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4,
+ 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc,
+ 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274,
+ 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e,
+ 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263,
+ 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f,
+ 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd,
+ 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3,
+ 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8,
+ 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2,
+ 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179,
+ 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa,
+ 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca,
+ 0xa2cb, 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, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9,
+ 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 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, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+ 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+ 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376,
+ 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
+ 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
+ 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
+ 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
+ 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252,
+ 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442,
+ 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3,
+ 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543,
+ 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5,
+ 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940,
+ 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546,
+ 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e,
+ 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2,
+ 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac,
+ 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460,
+ 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
+ 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952,
+ 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6,
+ 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a,
+ 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548,
+ 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
+ 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5,
+ 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab,
+ 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac,
+ 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67,
+ 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60,
+ 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd,
+ 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb,
+ 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740,
+ 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f,
+ 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5,
+ 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de,
+ 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9,
+ 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2,
+ 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da,
+ 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56,
+ 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec,
+ 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde,
+ 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57,
+ 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a,
+ 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef,
+ 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
+ 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc,
+ 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb,
+ 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce,
+ 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3,
+ 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8,
+ 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463,
+ 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
+ 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
+ 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450,
+ 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d,
+ 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc,
+ 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857,
+ 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d,
+ 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c,
+ 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+ 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+ 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc,
+ 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1,
+ 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
+ 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0,
+ 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
+ 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7,
+ 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd,
+ 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa,
+ 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7,
+ 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9,
+ 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f,
+ 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b,
+ 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc,
+ 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df,
+ 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b,
+ 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2,
+ 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3,
+ 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a,
+ 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd,
+ 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc,
+ 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3,
+ 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468,
+ 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a,
+ 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558,
+ 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be,
+ 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647,
+ 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753,
+ 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0,
+ 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0,
+ 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
+ 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9,
+ 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b,
+ 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7,
+ 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb,
+ 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3,
+ 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f,
+ 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757,
+ 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3,
+ 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d,
+ 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5,
+ 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4,
+ 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956,
+ 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7,
+ 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6,
+ 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a,
+ 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa,
+ 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451,
+ 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d,
+ 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
+ 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566,
+ 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9,
+ 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75,
+ 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470,
+ 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd,
+ 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce,
+ 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb,
+ 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575,
+ 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576,
+ 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655,
+ 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657,
+ 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767,
+ 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f,
+ 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
+ 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a,
+ 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763,
+ 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79,
+ 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
+ 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
+ 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
+ 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948,
+ 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde,
+ 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b,
+ 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72,
+ 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42,
+ 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73,
+ 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2,
+ 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1,
+ 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb,
+ 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7,
+ 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd,
+ 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145,
+ 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0,
+ 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db,
+ 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5,
+ 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e,
+ 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475,
+ 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2,
+ 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471,
+ 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8,
+ 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
+ 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d,
+ 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7,
+ 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867,
+ 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5,
+ 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
+ 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
+ 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
+ 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4,
+ 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4,
+ 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2,
+ 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb,
+ 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f,
+ 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca,
+ 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a,
+ 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48,
+ 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd,
+ 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe,
+ 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba,
+ 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe,
+ 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946,
+ 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5,
+ 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
+ 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb,
+ 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5,
+ 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+ 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8,
+ 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1,
+ 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7,
+ 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7,
+ 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45,
+ 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2,
+ 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947,
+ 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9,
+ 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6,
+ 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae,
+ 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959,
+ 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4,
+ 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8,
+ 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac,
+ 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b,
+ 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae,
+ 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e,
+ 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155,
+ 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c,
+ 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf,
+ 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be,
+ 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2,
+ 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed,
+ 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb,
+ 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2,
+ 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d,
+ 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
+ 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3,
+ 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6,
+ 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee,
+ 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0,
+ 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d,
+ 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1,
+ 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160,
+ 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161,
+ 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d,
+ 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550,
+ 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1,
+ 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b,
+ 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca,
+ 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363,
+ 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7,
+ 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a,
+ 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469,
+ 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db,
+ 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1,
+ 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961,
+ 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7,
+ 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd,
+ 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d,
+ 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1,
+ 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc,
+ 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6,
+ 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
+ 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4,
+ 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970,
+ 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50,
+ 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52,
+ 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
+ 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8,
+ 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1,
+ 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d,
+ 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a,
+ 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162,
+ 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51,
+ 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a,
+ 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3,
+ 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0,
+ 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6,
+ 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142,
+ 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db,
+ 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8,
+ 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6,
+ 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443,
+ 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf,
+ 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf,
+ 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9,
+ 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd,
+ 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3,
+ 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2,
+ 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178,
+ 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b,
+ 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555,
+ 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554,
+ 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
+ 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952,
+ 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8,
+ 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6,
+ 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb,
+ 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc,
+ 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3,
+ 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55,
+ 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145,
+ 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7,
+ 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675,
+ 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58,
+ 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5,
+ 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63,
+ 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
+ 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5,
+ 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a,
+ 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8,
+ 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66,
+ 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9,
+ 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e,
+ 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
+ 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471,
+ 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c,
+ 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf,
+ 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce,
+ 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69,
+ 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2,
+ 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
+ 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
+ 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4,
+ 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9,
+ 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69,
+ 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64,
+ 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2,
+ 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
+ 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c,
+ 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e,
+ 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170,
+ 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153,
+ 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541,
+ 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
+ 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+ 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451,
+ 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6,
+ 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb,
+ 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2,
+ 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
+ 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7,
+ 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1,
+ 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567,
+ 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d,
+ 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965,
+ 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
+ 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172,
+ 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de,
+ 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da,
+ 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5,
+ 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf,
+ 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb,
+ 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9,
+ 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1,
+ 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162,
+ 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3,
+ 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59,
+ 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3,
+ 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d,
+ 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6,
+ 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af,
+ 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc,
+ 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7,
+ 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7,
+ 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77,
+ 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548,
+ 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b,
+ 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60,
+ 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9,
+ 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574,
+ 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970,
+ 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655,
+ 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb,
+ 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d,
+ 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc,
+ 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda,
+ 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d,
+ 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
+ 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4,
+ 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343,
+ 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df,
+ 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+ 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2,
+ 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f,
+ 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173,
+ 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64,
+ 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde,
+ 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2,
+ 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1,
+ 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be,
+ 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9,
+ 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7,
+ 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e,
+ 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac,
+ 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0,
+ 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b,
+ 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab,
+ 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca,
+ 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7,
+ 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e,
+ 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2,
+ 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef,
+ 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6,
+ 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551,
+ 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf,
+ 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2,
+ 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465,
+ 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554,
+ 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
+ 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
+ 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f,
+ 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d,
+ 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
+ 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473,
+ 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941,
+ 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe,
+ 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750,
+ 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
+ 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71,
+ 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67,
+ 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce,
+ 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45,
+ 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
+ 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd,
+ 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc,
+ 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8,
+ 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1,
+ 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
+ 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
+ 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1,
+ 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5,
+ 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7,
+ 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+ 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
+ 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
+ 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
+ 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
+ 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
+ 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
+ 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257,
+ 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3,
+ 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2,
+ 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab,
+ 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8,
+ 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0,
+ 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef,
+ 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7,
+ 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9,
+ 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+ 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba,
+ 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0,
+ 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6,
+ 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7,
+ 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec,
+ 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41,
+ 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
+ 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
+ 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
+ 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
+ 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf,
+ 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7,
+ 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb,
+ 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc,
+ 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd,
+ 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7,
+ 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572,
+ 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc,
+ 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1,
+ 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571,
+ 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8,
+ 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4,
+ 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9,
+ 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b,
+ 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
+ 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
+ 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971,
+ 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2,
+ 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
+ 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
+ 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c,
+ 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e,
+ 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d,
+ 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad,
+ 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1,
+ 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee,
+ 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51,
+ 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc,
+ 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba,
+ 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df,
+ 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50,
+ 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa,
+ 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9,
+ 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2,
+ 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba,
+ 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3,
+ 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab,
+ 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba,
+ 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae,
+ 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced,
+ 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
+ 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
+ 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
+ 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464,
+ 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1,
+ 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc,
+ 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af,
+ 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46,
+ 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3,
+ 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
+ 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0,
+ 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3,
+ 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1,
+ 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979,
+ 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
+ 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
+ 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
+ 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8,
+ 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1,
+ 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d,
+ 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249,
+ 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af,
+ 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9,
+ 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca,
+ 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb,
+ 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6,
+ 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1,
+ 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8,
+ 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7,
+ 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3,
+ 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
+ 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2,
+ 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8,
+ 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1,
+ 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4,
+ 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778,
+ 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a,
+ 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca,
+ 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba,
+ 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5,
+ 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
+ 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
+ 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
+ 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2,
+ 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb,
+ 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8,
+ 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8,
+ 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
+ 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1,
+ 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd,
+ 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5,
+ 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40,
+ 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4,
+ 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53,
+ 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4,
+ 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
+ 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6,
+ 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47,
+ 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62,
+ 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44,
+ 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f,
+ 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61,
+ 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40,
+ 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c,
+ 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
+ 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
+ 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1,
+ 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5,
+ 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0,
+ 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda,
+ 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7,
+ 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1,
+ 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4,
+ 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
+ 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7,
+ 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4,
+ 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7,
+ 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb,
+ 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7,
+ 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede,
+ 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1,
+ 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5,
+ 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0,
+ 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9,
+ 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1,
+ 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd,
+ 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
+ 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9,
+ 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae,
+ 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb,
+ 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3,
+ 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc,
+ 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6,
+ 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3,
+ 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa,
+ 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5,
+ 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6,
+ 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f,
+ 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240,
+ 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b,
+ 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc,
+ 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
+ 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262,
+ 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69,
+ 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
+ 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5,
+ 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
+ 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
+ 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc,
+ 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf,
+ 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca,
+ 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7,
+ 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5,
+ 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9,
+ 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5,
+ 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1,
+ 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf,
+ 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7,
+ 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9,
+ 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8,
+ 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42,
+ 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4,
+ 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd,
+ 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f,
+ 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
+ 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468,
+ 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7,
+ 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6,
+ 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656,
+ 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59,
+ 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7,
+ 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
+ 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
+ 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
+ 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3,
+ 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842,
+ 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b,
+ 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66,
+ 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
+ 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb,
+ 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4,
+ 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8,
+ 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5,
+ 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9,
+ 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6,
+ 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a,
+ 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241,
+ 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd,
+ 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7,
+ 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7,
+ 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7,
+ 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0,
+ 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3,
+ 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4,
+ 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc,
+ 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd,
+ 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
+ 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c,
+ 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858,
+ 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847,
+ 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849,
+ 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853,
+ 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b,
+ 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62,
+ 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76,
+ 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb,
+ 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49,
+ 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
+ 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e,
+ 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0,
+ 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61,
+ 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa,
+ 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad,
+ 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5,
+ 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d,
+ 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
+ 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
+ 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
+ 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257,
+ 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f,
+ 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44,
+ 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a,
+ 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49,
+ 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251,
+ 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258,
+ 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3,
+ 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7,
+ 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e,
+ 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640,
+ 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e,
+ 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed,
+ 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6,
+ 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260,
+ 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c,
+ 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a,
+ 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed,
+ 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4,
+ 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55,
+ 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd,
+ 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
+ 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b,
+ 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4,
+ 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c,
+ 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46,
+ 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540,
+ 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7,
+ 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
+ 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
+ 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65,
+ 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a,
+ 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e,
+ 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c,
+ 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44,
+ 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
+ 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273,
+ 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f,
+ 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac,
+ 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278,
+ 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270,
+ 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274,
+ 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272,
+ 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6,
+ 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659,
+ 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0,
+ 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657,
+ 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec,
+ 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0,
+ 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5,
+ 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
+ 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49,
+ 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5,
+ 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46,
+ 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9,
+ 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1,
+ 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43,
+ 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59,
+ 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
+ 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+ 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6,
+ 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb,
+ 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272,
+ 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373,
+ 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266,
+ 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a,
+ 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465,
+ 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461,
+ 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9,
+ 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4,
+ 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665,
+ 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41,
+ 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a,
+ 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53,
+ 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3,
+ 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2,
+ 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0,
+ 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b,
+ 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f,
+ 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e,
+ 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269,
+ 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f,
+ 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651,
+ 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62,
+ 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c,
+ 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77,
+ 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2,
+ 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
+ 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
+ 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
+ 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd,
+ 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5,
+ 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664,
+ 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b,
+ 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6,
+ 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b,
+ 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56,
+ 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d,
+ 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58,
+ 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9,
+ 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
+ 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
+ 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269,
+ 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da,
+ 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6,
+ 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52,
+ 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5,
+ 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4,
+ 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9,
+ 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab,
+ 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb,
+ 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c,
+ 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69,
+ 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9,
+ 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a,
+ 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c,
+ 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44,
+ 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866,
+ 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0,
+ 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63,
+ 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0,
+ 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57,
+ 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3,
+ 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663,
+ 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271,
+ 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556,
+ 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553,
+ 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab,
+ 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa,
+ 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
+ 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
+ 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
+ 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1,
+ 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7,
+ 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7,
+ 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
+ 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69,
+ 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce,
+ 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2,
+ 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9,
+ 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae,
+ 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f,
+ 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf,
+ 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674,
+ 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277,
+ 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c,
+ 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6,
+ 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b,
+ 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e,
+ 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1,
+ 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5,
+ 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec,
+ 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf,
+ 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1,
+ 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe,
+ 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69,
+ 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c,
+ 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6,
+ 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67,
+ 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044,
+ 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273,
+ 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0,
+ 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d,
+ 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8,
+ 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0,
+ 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
+ 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c,
+ 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0,
+ 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869,
+ 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b,
+ 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda,
+ 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63,
+ 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4,
+ 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5,
+ 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6,
+ 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f,
+ 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd,
+ 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab,
+ 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65,
+ 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac,
+ 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d,
+ 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3,
+ 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2,
+ 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6,
+ 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc,
+ 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7,
+ 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8,
+ 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2,
+ 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af,
+ 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d,
+ 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e,
+ 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d,
+ 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a,
+ 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df,
+ 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1,
+ 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d,
+ 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae,
+ 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb,
+ 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5,
+ 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74,
+ 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6,
+ 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af,
+ 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca,
+ 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473,
+ 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79,
+ 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9,
+ 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd,
+ 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
+ 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77,
+ 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2,
+ 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af,
+ 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2,
+ 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1,
+ 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846,
+ 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb,
+ 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9,
+ 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e,
+ 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50,
+ 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66,
+ 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3,
+ 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb,
+ 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
+ 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477,
+ 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8,
+ 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f,
+ 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142,
+ 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e,
+ 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1,
+ 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3,
+ 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1,
+ 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2,
+ 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc,
+ 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8,
+ 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5,
+ 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577,
+ 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e,
+ 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
+ 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9,
+ 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4,
+ 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3,
+ 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed,
+ 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
+ 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
+ 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6,
+ 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69,
+ 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145,
+ 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
+ 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b,
+ 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2,
+ 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
+ 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2,
+ 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1,
+ 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7,
+ 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea,
+ 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac,
+ 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd,
+ 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3,
+ 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4,
+ 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342,
+ 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0,
+ 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0,
+ 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1,
+ 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3,
+ 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3,
+ 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc,
+ 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf,
+ 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0,
+ 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
+ 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41,
+ 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9,
+ 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349,
+ 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2,
+ 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1,
+ 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
+ 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
+ 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2,
+ 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5,
+ 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6,
+ 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca,
+ 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44,
+ 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b,
+ 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4,
+ 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
+ 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8,
+ 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc,
+ 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2,
+ 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347,
+ 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3,
+ 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd,
+ 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8,
+ 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb,
+ 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
+ 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
+ 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53,
+ 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f,
+ 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51,
+ 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355,
+ 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353,
+ 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade,
+ 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6,
+ 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67,
+ 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5,
+ 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151,
+ 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe,
+ 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1,
+ 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd,
+ 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce,
+ 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063,
+ 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1,
+ 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab,
+ 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9,
+ 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7,
+ 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa,
+ 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2,
+ 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659,
+ 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3,
+ 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b,
+ 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+ 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9,
+ 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361,
+ 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b,
+ 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c,
+ 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152,
+ 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b,
+ 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9,
+ 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa,
+ 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353,
+ 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355,
+ 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350,
+ 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8,
+ 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5,
+ 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
+ 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
+ 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7,
+ 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8,
+ 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5,
+ 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868,
+ 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60,
+ 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
+ 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78,
+ 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377,
+ 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4,
+ 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373,
+ 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369,
+ 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc,
+ 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0,
+ 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5,
+ 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d,
+ 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7,
+ 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1,
+ 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3,
+ 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4,
+ 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169,
+ 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
+ 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
+ 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
+ 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4,
+ 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6,
+ 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8,
+ 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
+ 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
+ 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7,
+ 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee,
+ 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce,
+ 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a,
+ 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8,
+ 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d,
+ 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a,
+ 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870,
+ 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1,
+ 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9,
+ 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362,
+ 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
+ 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872,
+ 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079,
+ 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3,
+ 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd,
+ 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
+ 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70,
+ 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9,
+ 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
+ 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b,
+ 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1,
+ 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41,
+ 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
+ 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71,
+ 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5,
+ 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5,
+ 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
+ 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb,
+ 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c,
+ 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb,
+ 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9,
+ 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75,
+ 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace,
+ 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c,
+ 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d,
+ 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064,
+ 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f,
+ 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e,
+ 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
+ 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2,
+ 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf,
+ 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c,
+ 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7,
+ 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f,
+ 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb,
+ 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
+ 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72,
+ 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879,
+ 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1,
+ 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a,
+ 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744,
+ 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
+ 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed,
+ 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec,
+ 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
+ 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179,
+ 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2,
+ 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6,
+ 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b,
+ 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50,
+ 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068,
+ 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c,
+ 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51,
+ 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1,
+ 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371,
+ 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee,
+ 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8,
+ 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748,
+ 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0,
+ 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6,
+ 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
+ 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
+ 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c,
+ 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc,
+ 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6,
+ 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2,
+ 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8,
+ 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade,
+ 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61,
+ 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65,
+ 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f,
+ 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078,
+ 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c,
+ 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
+ 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3,
+ 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+ 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
+ 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
+ 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe,
+ 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0,
+ 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef,
+ 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d,
+ 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340,
+ 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef,
+ 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+ 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3,
+ 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d,
+ 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7,
+ 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77,
+ 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1,
+ 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a,
+ 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63,
+ 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd,
+ 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e,
+ 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1,
+ 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
+ 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f,
+ 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5,
+ 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0,
+ 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc,
+ 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0,
+ 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8,
+ 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0,
+ 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0,
+ 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4,
+ 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5,
+ 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb,
+ 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1,
+ 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4,
+ 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6,
+ 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57,
+ 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9,
+ 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9,
+ 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4,
+ 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770,
+ 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
+ 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b,
+ 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
+ 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
+ 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
+ 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
+ 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43,
+ 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6,
+ 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
+ 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44,
+ 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe,
+ 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40,
+ 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d,
+ 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42,
+ 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4,
+ 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3,
+ 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc,
+ 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3,
+ 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9,
+ 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2,
+ 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3,
+ 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc,
+ 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
+ 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
+ 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7,
+ 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf,
+ 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8,
+ 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
+ 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+ 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749,
+ 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3,
+ 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7,
+ 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342,
+ 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e,
+ 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4,
+ 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6,
+ 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041,
+ 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce,
+ 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
+ 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba,
+ 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348,
+ 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af,
+ 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3,
+ 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf,
+ 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef,
+ 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3,
+ 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee,
+ 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed,
+ 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec,
+ 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb,
+ 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc,
+ 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d,
+ 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5,
+ 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2,
+ 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9,
+ 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b,
+ 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4,
+ 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba,
+ 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af,
+ 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd,
+ 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67,
+ 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f,
+ 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d,
+ 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1,
+ 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a,
+ 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60,
+ 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b,
+ 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af,
+ 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1,
+ 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1,
+ 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc,
+ 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6,
+ 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7,
+ 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5,
+ 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642,
+ 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644,
+ 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9,
+ 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
+ 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
+ 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c,
+ 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1,
+ 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae,
+ 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db,
+ 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
+ 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2,
+ 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf,
+ 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5,
+ 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd,
+ 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8,
+ 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3,
+ 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca,
+ 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc,
+ 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7,
+ 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
+ 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9,
+ 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb,
+ 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8,
+ 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71,
+ 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
+ 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9,
+ 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6,
+ 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2,
+ 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0,
+ 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb,
+ 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
+ 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a,
+ 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2,
+ 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb,
+ 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf,
+ 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4,
+ 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4,
+ 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043,
+ 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd,
+ 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d,
+ 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755,
+ 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1,
+ 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd,
+ 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc,
+ 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d,
+ 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd,
+ 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0,
+ 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf,
+ 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc,
+ 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2,
+ 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050,
+ 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047,
+ 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c,
+ 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f,
+ 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e,
+ 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2,
+ 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd,
+ 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
+ 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7,
+ 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2,
+ 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd,
+ 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0,
+ 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce,
+ 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3,
+ 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc,
+ 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2,
+ 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e,
+ 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
+ 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd,
+ 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec,
+ 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7,
+ 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342,
+ 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3,
+ 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4,
+ 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
+ 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
+ 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842,
+ 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d,
+ 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce,
+ 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844,
+ 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6,
+ 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
+ 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
+ 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
+ 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
+ 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
+ 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
+ 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
+ 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1,
+ 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a,
+ 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655,
+ 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650,
+ 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9,
+ 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea,
+ 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5,
+ 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3,
+ 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb,
+ 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5,
+ 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba,
+ 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845,
+ 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9,
+ 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3,
+ 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed,
+ 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065,
+ 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2,
+ 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd,
+ 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac,
+ 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b,
+ 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b,
+ 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7,
+ 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a,
+ 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070,
+ 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067,
+ 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461,
+ 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
+ 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843,
+ 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9,
+ 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4,
+ 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6,
+ 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3,
+ 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
+ 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba,
+ 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141,
+ 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8,
+ 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de,
+ 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df,
+ 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+ 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
+ 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
+ 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
+ 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa,
+ 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79,
+ 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
+ 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43,
+ 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc,
+ 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe,
+ 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb,
+ 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467,
+ 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d,
+ 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
+ 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847,
+ 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+ 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0,
+ 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1,
+ 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd,
+ 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657,
+ 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664,
+ 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0,
+ 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2,
+ 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0,
+ 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3,
+ 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a,
+ 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0,
+ 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef,
+ 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4,
+ 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5,
+ 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2,
+ 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a,
+ 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1,
+ 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949,
+ 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf,
+ 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43,
+ 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f,
+ 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2,
+ 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3,
+ 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0,
+ 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51,
+ 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9,
+ 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6,
+ 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7,
+ 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
+ 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
+ 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
+ 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
+ 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
+ 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
+ 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
+ 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
+ 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+ 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
+ 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
+ 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
+ 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
+ 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
+ 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2,
+ 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f,
+ 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad,
+ 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472,
+ 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+ 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4,
+ 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
+ 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152,
+ 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5,
+ 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8,
+ 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6,
+ 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7,
+ 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079,
+ 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab,
+ 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8,
+ 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62,
+ 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63,
+ 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673,
+ 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73,
+ 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc,
+ 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a,
+ 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8,
+ 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af,
+ 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd,
+ 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba,
+ 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc,
+ 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9,
+ 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9,
+ 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3,
+ 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7,
+ 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3,
+ 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f,
+ 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3,
+ 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875,
+ 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b,
+ 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876,
+ 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869,
+ 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8,
+ 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40,
+ 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd,
+ 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde,
+ 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041,
+ 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9,
+ 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea,
+ 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+ 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
+ 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9,
+ 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4,
+ 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9,
+ 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
+ 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
+ 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd,
+ 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a,
+ 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec,
+ 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361,
+ 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9,
+ 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364,
+ 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3,
+ 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5,
+ 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
+ 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541,
+ 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec,
+ 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666,
+ 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b,
+ 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662,
+ 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f,
+ 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b,
+ 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb,
+ 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955,
+ 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672,
+ 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8,
+ 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845,
+ 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b,
+ 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf,
+ 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7,
+ 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3,
+ 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef,
+ 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0,
+ 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6,
+ 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4,
+ 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9,
+ 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf,
+ 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda,
+ 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae,
+ 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2,
+ 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c,
+ 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1,
+ 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0,
+ 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9,
+ 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3,
+ 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda,
+ 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f,
+ 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5,
+ 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6,
+ 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d,
+ 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6,
+ 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb,
+ 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7,
+ 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8,
+ 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d,
+ 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b,
+ 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb,
+ 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc,
+ 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c,
+ 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f,
+ 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0,
+ 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051,
+ 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2,
+ 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976,
+ 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
+ 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1,
+ 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54,
+ 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
+ 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
+ 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7,
+ 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4,
+ 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5,
+ 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671,
+ 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58,
+ 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
+ 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
+ 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
+ 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb,
+ 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059,
+ 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057,
+ 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47,
+ 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346,
+ 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
+ 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773,
+ 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7,
+ 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68,
+ 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+ 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0,
+ 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9,
+ 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0,
+ 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0,
+ 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a,
+ 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e,
+ 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
+ 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
+ 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac,
+ 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555,
+ 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+ 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba,
+ 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56,
+ 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be,
+ 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4,
+ 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc,
+ 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73,
+ 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70,
+ 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69,
+ 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a,
+ 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60,
+ 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8,
+ 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4,
+ 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7,
+ 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560,
+ 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a,
+ 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679,
+ 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558,
+ 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
+ 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853,
+ 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b,
+ 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9,
+ 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065,
+ 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
+ 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
+ 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6,
+ 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
+ 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067,
+ 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350,
+ 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569,
+ 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854,
+ 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069,
+ 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf,
+ 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee,
+ 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1,
+ 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8,
+ 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2,
+ 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
+ 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
+ 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a,
+ 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f,
+ 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244,
+ 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6,
+ 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355,
+ 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7,
+ 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4,
+ 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c,
+ 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a,
+ 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa,
+ 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac,
+ 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae,
+ 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad,
+ 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860,
+ 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e,
+ 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a,
+ 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674,
+ 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec,
+ 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb,
+ 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef,
+ 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7,
+ 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
+ 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9,
+ 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d,
+ 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3,
+ 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0,
+ 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf,
+ 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
+ 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5,
+ 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de,
+ 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c,
+ 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5,
+ 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
+ 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9,
+ 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
+ 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
+ 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6,
+ 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc,
+ 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1,
+ 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e,
+ 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f,
+ 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4,
+ 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd,
+ 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0,
+ 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961,
+ 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf,
+ 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee,
+ 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
+ 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452,
+ 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963,
+ 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454,
+ 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874,
+ 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2,
+ 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a,
+ 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
+ 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877,
+ 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5,
+ 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e,
+ 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf,
+ 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3,
+ 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6,
+ 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9,
+ 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8,
+ 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e,
+ 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa,
+ 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
+ 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6,
+ 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb,
+ 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3,
+ 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074,
+ 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159,
+ 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b,
+ 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b,
+ 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
+ 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e,
+ 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de,
+ 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149,
+ 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf,
+ 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2,
+ 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146,
+ 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1,
+ 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9,
+ 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1,
+ 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242,
+ 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
+ 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
+ 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
+ 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e,
+};
+
+static const Summary16 big5_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 },
+ { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 },
+};
+static const Summary16 big5_uni2indx_page02[38] = {
+ /* 0x0200 */
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 },
+ /* 0x0300 */
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe },
+ { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 },
+ /* 0x0400 */
+ { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff },
+ { 101, 0xffff }, { 117, 0x0002 },
+};
+static const Summary16 big5_uni2indx_page20[44] = {
+ /* 0x2000 */
+ { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ /* 0x2100 */
+ { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 },
+ { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 },
+ { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 },
+ { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 },
+ /* 0x2200 */
+ { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 },
+ { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 },
+ { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 },
+};
+static const Summary16 big5_uni2indx_page24[37] = {
+ /* 0x2400 */
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 },
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ /* 0x2500 */
+ { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 },
+ { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f },
+ { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c },
+ { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 },
+ /* 0x2600 */
+ { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 },
+ { 249, 0x0007 },
+};
+static const Summary16 big5_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 },
+ { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff },
+ { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff },
+ { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f },
+ /* 0x3100 */
+ { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ /* 0x3200 */
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ /* 0x3300 */
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 },
+ { 497, 0x4010 }, { 499, 0x0026 },
+};
+static const Summary16 big5_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f },
+ { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 },
+ { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 },
+ { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff },
+ /* 0x4f00 */
+ { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 },
+ { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 },
+ { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec },
+ { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa },
+ /* 0x5000 */
+ { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab },
+ { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd },
+ { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff },
+ { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b },
+ /* 0x5100 */
+ { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf },
+ { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 },
+ { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 },
+ { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b },
+ /* 0x5200 */
+ { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def },
+ { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 },
+ { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 },
+ { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb },
+ /* 0x5300 */
+ { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 },
+ { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf },
+ { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 },
+ { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f },
+ /* 0x5400 */
+ { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb },
+ { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff },
+ { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb },
+ { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e },
+ /* 0x5500 */
+ { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff },
+ { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 },
+ { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e },
+ { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 },
+ /* 0x5600 */
+ { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d },
+ { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df },
+ { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc },
+ { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 },
+ /* 0x5700 */
+ { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 },
+ { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff },
+ { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 },
+ { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff },
+ /* 0x5800 */
+ { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff },
+ { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 },
+ { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a },
+ { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 },
+ /* 0x5900 */
+ { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 },
+ { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf },
+ { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e },
+ { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe },
+ /* 0x5a00 */
+ { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 },
+ { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 },
+ { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff },
+ { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 },
+ /* 0x5b00 */
+ { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 },
+ { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf },
+ { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 },
+ { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 },
+ /* 0x5c00 */
+ { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b },
+ { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a },
+ { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb },
+ { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 },
+ /* 0x5d00 */
+ { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff },
+ { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 },
+ { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 },
+ { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f },
+ /* 0x5e00 */
+ { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 },
+ { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d },
+ { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff },
+ { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce },
+ /* 0x5f00 */
+ { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb },
+ { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db },
+ { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 },
+ { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba },
+ /* 0x6000 */
+ { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc },
+ { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 },
+ { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 },
+ { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff },
+ /* 0x6100 */
+ { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 },
+ { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff },
+ { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f },
+ { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 },
+ /* 0x6200 */
+ { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d },
+ { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf },
+ { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b },
+ { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff },
+ /* 0x6300 */
+ { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c },
+ { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 },
+ { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 },
+ { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f },
+ /* 0x6400 */
+ { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 },
+ { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd },
+ { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f },
+ { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f },
+ /* 0x6500 */
+ { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc },
+ { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc },
+ { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd },
+ { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f },
+ /* 0x6600 */
+ { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e },
+ { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 },
+ { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 },
+ { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd },
+ /* 0x6700 */
+ { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a },
+ { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff },
+ { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd },
+ { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff },
+ /* 0x6800 */
+ { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e },
+ { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 },
+ { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f },
+ { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff },
+ /* 0x6900 */
+ { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd },
+ { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 },
+ { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb },
+ { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de },
+ /* 0x6a00 */
+ { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 },
+ { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 },
+ { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 },
+ { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b },
+ /* 0x6b00 */
+ { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde },
+ { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 },
+ { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed },
+ { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d },
+ /* 0x6c00 */
+ { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 },
+ { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f },
+ { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb },
+ { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f },
+ /* 0x6d00 */
+ { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff },
+ { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 },
+ { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc },
+ { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff },
+ /* 0x6e00 */
+ { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f },
+ { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e },
+ { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df },
+ { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 },
+ /* 0x6f00 */
+ { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef },
+ { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd },
+ { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f },
+ { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 },
+ /* 0x7000 */
+ { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf },
+ { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 },
+ { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb },
+ { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 },
+ /* 0x7100 */
+ { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 },
+ { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 },
+ { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f },
+ { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 },
+ /* 0x7200 */
+ { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 },
+ { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd },
+ { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 },
+ { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 },
+ /* 0x7300 */
+ { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff },
+ { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded },
+ { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc },
+ { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 },
+ /* 0x7400 */
+ { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f },
+ { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f },
+ { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 },
+ { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 },
+ /* 0x7500 */
+ { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f },
+ { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 },
+ { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d },
+ { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff },
+ /* 0x7600 */
+ { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f },
+ { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 },
+ { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 },
+ { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf },
+ /* 0x7700 */
+ { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe },
+ { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 },
+ { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff },
+ { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f },
+ /* 0x7800 */
+ { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf },
+ { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 },
+ { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d },
+ { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c },
+ /* 0x7900 */
+ { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 },
+ { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d },
+ { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf },
+ { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 },
+ /* 0x7a00 */
+ { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 },
+ { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 },
+ { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe },
+ { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 },
+ /* 0x7b00 */
+ { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f },
+ { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff },
+ { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 },
+ { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f },
+ /* 0x7c00 */
+ { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 },
+ { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c },
+ { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e },
+ { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 },
+ /* 0x7d00 */
+ { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f },
+ { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f },
+ { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 },
+ { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf },
+ /* 0x7e00 */
+ { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff },
+ { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd },
+ { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ /* 0x7f00 */
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 },
+ { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed },
+ { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef },
+ { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf },
+ /* 0x8000 */
+ { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 },
+ { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef },
+ { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 },
+ { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f },
+ /* 0x8100 */
+ { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 },
+ { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df },
+ { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf },
+ { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c },
+ /* 0x8200 */
+ { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc },
+ { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 },
+ { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb },
+ { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f },
+ /* 0x8300 */
+ { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe },
+ { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 },
+ { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 },
+ { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f },
+ /* 0x8400 */
+ { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff },
+ { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 },
+ { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 },
+ { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf },
+ /* 0x8500 */
+ { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 },
+ { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 },
+ { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb },
+ { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 },
+ /* 0x8600 */
+ { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e },
+ { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b },
+ { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb },
+ { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 },
+ /* 0x8700 */
+ { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf },
+ { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 },
+ { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd },
+ { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc },
+ /* 0x8800 */
+ { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef },
+ { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 },
+ { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 },
+ { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf },
+ /* 0x8900 */
+ { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef },
+ { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e },
+ { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 },
+ { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf },
+ /* 0x8a00 */
+ { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 },
+ { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff },
+ { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 },
+ { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff },
+ /* 0x8b00 */
+ { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb },
+ { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 },
+ { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ /* 0x8c00 */
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 },
+ { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef },
+ { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd },
+ { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b },
+ /* 0x8d00 */
+ { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 },
+ { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd },
+ { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc },
+ { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f },
+ /* 0x8e00 */
+ { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b },
+ { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c },
+ { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 },
+ { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 },
+ /* 0x8f00 */
+ { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc },
+ { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 },
+ { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 },
+ { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 },
+ /* 0x9000 */
+ { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 },
+ { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd },
+ { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f },
+ { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f },
+ /* 0x9100 */
+ { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f },
+ { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc },
+ { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf },
+ { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba },
+ /* 0x9200 */
+ { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df },
+ { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 },
+ { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc },
+ { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 },
+ /* 0x9300 */
+ { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 },
+ { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 },
+ { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf },
+ { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 },
+ /* 0x9400 */
+ { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef },
+ { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff },
+ { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ /* 0x9500 */
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 },
+ { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 },
+ { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 },
+ /* 0x9600 */
+ { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 },
+ { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff },
+ { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b },
+ { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 },
+ /* 0x9700 */
+ { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 },
+ { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd },
+ { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 },
+ { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b },
+ /* 0x9800 */
+ { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 },
+ { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f },
+ { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e },
+ { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 },
+ /* 0x9900 */
+ { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f },
+ { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 },
+ { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f },
+ { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 },
+ /* 0x9a00 */
+ { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 },
+ { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 },
+ { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b },
+ { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece },
+ /* 0x9b00 */
+ { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae },
+ { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 },
+ { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 },
+ { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 },
+ /* 0x9c00 */
+ { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade },
+ { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe },
+ /* 0x9d00 */
+ { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb },
+ { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf },
+ { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe },
+ { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd },
+ /* 0x9e00 */
+ { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 },
+ { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 },
+ { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 },
+ { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd },
+ /* 0x9f00 */
+ { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff },
+ { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 },
+ { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 },
+};
+static const Summary16 big5_uni2indx_pagefa[1] = {
+ /* 0xfa00 */
+ { 13563, 0x3000 },
+};
+static const Summary16 big5_uni2indx_pagefe[23] = {
+ /* 0xfe00 */
+ { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb },
+ { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ /* 0xff00 */
+ { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff },
+ { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 },
+};
+
+static int
+big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0100)
+ summary = &big5_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0200 && wc < 0x0460)
+ summary = &big5_uni2indx_page02[(wc>>4)-0x020];
+ else if (wc >= 0x2000 && wc < 0x22c0)
+ summary = &big5_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2400 && wc < 0x2650)
+ summary = &big5_uni2indx_page24[(wc>>4)-0x240];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &big5_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xfa00 && wc < 0xfa10)
+ summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0];
+ else if (wc >= 0xfe00 && wc < 0xff70)
+ summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/src/xlibi18n/lcUniConv/big5_emacs.h b/src/xlibi18n/lcUniConv/big5_emacs.h
new file mode 100644
index 00000000..91475539
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/big5_emacs.h
@@ -0,0 +1,164 @@
+/* $XFree86: xc/lib/X11/lcUniConv/big5_emacs.h,v 1.1 2000/11/28 18:50:06 dawes Exp $ */
+
+/*
+ * BIG5-0 and BIG5-1
+ */
+
+/*
+ BIG5 with its 13494 characters doesn't fit in a single 94x94 or 96x96
+ block. Therefore Emacs/Mule developers, in a typically Japanese way of
+ thinking, have developed an alternative encoding of BIG5 in two 94x94
+ planes, very similar to the SHIFT_JIS encoding for JISX0208.
+
+ Conversion between BIG5 codes (s1,s2) and BIG5-0 codes (c1,c2):
+ Example. (s1,s2) = 0xA140, (c1,c2) = 0x2121.
+ 0xA1 <= s1 <= 0xC7, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
+ 0x21 <= c1 <= 0x62, 0x21 <= c2 <= 0x7E.
+ Invariant:
+ 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ = 94*(c1-0x21)+(c2-0x21)
+ Conversion (s1,s2) -> (c1,c2):
+ t := 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ c1 := (t div 94) + 0x21
+ c2 := (t mod 94) + 0x21
+ Conversion (c1,c2) -> (s1,s2):
+ t := 94*(c1-0x21)+(c2-0x21)
+ t2 := t mod 157
+ s1 := (t div 157) + 0xA1
+ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
+
+ Conversion between BIG5 codes (s1,s2) and BIG5-1 codes (c1,c2):
+ Example. (s1,s2) = 0xC940, (c1,c2) = 0x2121.
+ 0xC9 <= s1 <= 0xF9, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
+ 0x21 <= c1 <= 0x72, 0x21 <= c2 <= 0x7E.
+ Invariant:
+ 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ = 94*(c1-0x21)+(c2-0x21)
+ Conversion (s1,s2) -> (c1,c2):
+ t := 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ c1 := (t div 94) + 0x21
+ c2 := (t mod 94) + 0x21
+ Conversion (c1,c2) -> (s1,s2):
+ t := 94*(c1-0x21)+(c2-0x21)
+ t2 := t mod 157
+ s1 := (t div 157) + 0xC9
+ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
+ */
+
+static int
+big5_0_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if (c1 >= 0x21 && c1 <= 0x62) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if (c2 >= 0x21 && c2 <= 0x7e) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ if (0) {
+ /* Unoptimized. */
+ unsigned char buf[2];
+ buf[0] = (i / 157) + 0xa1;
+ i = i % 157;
+ buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
+ return big5_mbtowc(conv,pwc,buf,2);
+ } else {
+ /* Inline the implementation of big5_mbtowc. */
+ if (i < 6121) {
+ unsigned short wc = big5_2uni_pagea1[i];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static int
+big5_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if (c1 >= 0x21 && c1 <= 0x72) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if (c2 >= 0x21 && c2 <= 0x7e) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ if (0) {
+ /* Unoptimized. */
+ unsigned char buf[2];
+ buf[0] = (i / 157) + 0xc9;
+ i = i % 157;
+ buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
+ return big5_mbtowc(conv,pwc,buf,2);
+ } else {
+ /* Inline the implementation of big5_mbtowc. */
+ if (i < 7652) {
+ unsigned short wc = big5_2uni_pagec9[i];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static int
+big5_0_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,buf,wc,2);
+ if (ret != RET_ILSEQ) {
+ unsigned char s1, s2;
+ if (ret != 2) abort();
+ s1 = buf[0];
+ s2 = buf[1];
+ if (!(s1 >= 0xa1)) abort();
+ if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
+ if (s1 < 0xc9) {
+ unsigned int t = 157 * (s1 - 0xa1) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
+ r[0] = (t / 94) + 0x21;
+ r[1] = (t % 94) + 0x21;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
+
+static int
+big5_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,buf,wc,2);
+ if (ret != RET_ILSEQ) {
+ unsigned char s1, s2;
+ if (ret != 2) abort();
+ s1 = buf[0];
+ s2 = buf[1];
+ if (!(s1 <= 0xf9)) abort();
+ if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
+ if (s1 >= 0xc9) {
+ unsigned int t = 157 * (s1 - 0xc9) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
+ r[0] = (t / 94) + 0x21;
+ r[1] = (t % 94) + 0x21;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/src/xlibi18n/lcUniConv/cjk_tab_to_h.c b/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
new file mode 100644
index 00000000..1335fae7
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
@@ -0,0 +1,1025 @@
+/* $XFree86: xc/lib/X11/lcUniConv/cjk_tab_to_h.c,v 1.2 2000/12/04 18:49:31 dawes Exp $ */
+
+/*
+ * Generates a CJK character set table from a .TXT table as found on
+ * ftp.unicode.org or in the X nls directory.
+ * Examples:
+ *
+ * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < gb2312
+ * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < jis0208
+ * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < ksc5601
+ *
+ * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < GB2312.TXT
+ * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < JIS0208.TXT
+ * ./cjk_tab_to_h JISX0212.1990-0 jisx0212 > jisx0212.h < JIS0212.TXT
+ * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < KSC5601.TXT
+ * ./cjk_tab_to_h KSX1001.1992-0 ksc5601 > ksc5601.h < KSX1001.TXT
+ *
+ * ./cjk_tab_to_h BIG5 big5 > big5.h < BIG5.TXT
+ *
+ * ./cjk_tab_to_h JOHAB johab > johab.h < JOHAB.TXT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+typedef struct {
+ int start;
+ int end;
+} Block;
+
+typedef struct {
+ int rows; /* number of possible values for the 1st byte */
+ int cols; /* number of possible values for the 2nd byte */
+ int (*row_byte) (int row); /* returns the 1st byte value for a given row */
+ int (*col_byte) (int col); /* returns the 2nd byte value for a given col */
+ int (*byte_row) (int byte); /* converts a 1st byte value to a row, else -1 */
+ int (*byte_col) (int byte); /* converts a 2nd byte value to a col, else -1 */
+ const char* check_row_expr; /* format string for 1st byte value checking */
+ const char* check_col_expr; /* format string for 2nd byte value checking */
+ const char* byte_row_expr; /* format string for 1st byte value to row */
+ const char* byte_col_expr; /* format string for 2nd byte value to col */
+ int** charset2uni; /* charset2uni[0..rows-1][0..cols-1] is valid */
+ /* You'll understand the terms "row" and "col" when you buy Ken Lunde's book.
+ Once a row is fixed, choosing a "col" is the same as choosing a "cell". */
+ int* charsetpage; /* charsetpage[0..rows]: how large is a page for a row */
+ int ncharsetblocks;
+ Block* charsetblocks; /* blocks[0..nblocks-1] */
+ int* uni2charset; /* uni2charset[0x0000..0xffff] */
+} Encoding;
+
+/*
+ * Outputs the file title.
+ */
+static void output_title (const char *charsetname)
+{
+ printf("\n");
+ printf("/*\n");
+ printf(" * %s\n", charsetname);
+ printf(" */\n");
+ printf("\n");
+}
+
+/*
+ * Reads the charset2uni table from standard input.
+ */
+static void read_table (Encoding* enc)
+{
+ int row, col, i, i1, i2, c, j;
+
+ enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
+ for (row = 0; row < enc->rows; row++)
+ enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++)
+ enc->charset2uni[row][col] = 0xfffd;
+
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &j) != 1)
+ exit(1);
+ i1 = j >> 8;
+ i2 = j & 0xff;
+ row = enc->byte_row(i1);
+ col = enc->byte_col(i2);
+ if (row < 0 || col < 0) {
+ fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
+ exit(1);
+ }
+ if (scanf(" 0x%x", &enc->charset2uni[row][col]) != 1)
+ exit(1);
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i1 = 32; i1 < 132; i1++)
+ for (i2 = 32; i2 < 132; i2++) {
+ i = scanf("%x", &j);
+ if (i == EOF)
+ goto read_done;
+ if (i != 1)
+ exit(1);
+ if (j < 0 || j == 0xffff)
+ j = 0xfffd;
+ if (j != 0xfffd) {
+ if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
+ fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
+ exit (1);
+ }
+ enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
+ }
+ }
+ read_done: ;
+ }
+}
+
+/*
+ * Computes the charsetpage[0..rows] array.
+ */
+static void find_charset2uni_pages (Encoding* enc)
+{
+ int row, col;
+
+ enc->charsetpage = (int*) malloc((enc->rows+1)*sizeof(int));
+
+ for (row = 0; row <= enc->rows; row++)
+ enc->charsetpage[row] = 0;
+
+ for (row = 0; row < enc->rows; row++) {
+ int used = 0;
+ for (col = 0; col < enc->cols; col++)
+ if (enc->charset2uni[row][col] != 0xfffd)
+ used = col+1;
+ enc->charsetpage[row] = used;
+ }
+}
+
+/*
+ * Fills in nblocks and blocks.
+ */
+static void find_charset2uni_blocks (Encoding* enc)
+{
+ int n, row, lastrow;
+
+ enc->charsetblocks = (Block*) malloc(enc->rows*sizeof(Block));
+
+ n = 0;
+ for (row = 0; row < enc->rows; row++)
+ if (enc->charsetpage[row] > 0 && (row == 0 || enc->charsetpage[row-1] == 0)) {
+ for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
+ enc->charsetblocks[n].start = row * enc->cols;
+ enc->charsetblocks[n].end = lastrow * enc->cols + enc->charsetpage[lastrow];
+ n++;
+ }
+ enc->ncharsetblocks = n;
+}
+
+/*
+ * Outputs the charset to unicode table and function.
+ */
+static void output_charset2uni (const char* name, Encoding* enc)
+{
+ int row, col, lastrow, col_max, i, i1_min, i1_max;
+
+ find_charset2uni_pages(enc);
+
+ find_charset2uni_blocks(enc);
+
+ for (row = 0; row < enc->rows; row++)
+ if (enc->charsetpage[row] > 0) {
+ if (row == 0 || enc->charsetpage[row-1] == 0) {
+ /* Start a new block. */
+ for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
+ printf("static const unsigned short %s_2uni_page%02x[%d] = {\n",
+ name, enc->row_byte(row),
+ (lastrow-row) * enc->cols + enc->charsetpage[lastrow]);
+ }
+ printf(" /""* 0x%02x *""/\n ", enc->row_byte(row));
+ col_max = (enc->charsetpage[row+1] > 0 ? enc->cols : enc->charsetpage[row]);
+ for (col = 0; col < col_max; col++) {
+ printf(" 0x%04x,", enc->charset2uni[row][col]);
+ if ((col % 8) == 7 && (col+1 < col_max)) printf("\n ");
+ }
+ printf("\n");
+ if (enc->charsetpage[row+1] == 0) {
+ /* End a block. */
+ printf("};\n");
+ }
+ }
+ printf("\n");
+
+ printf("static int\n");
+ printf("%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", name);
+ printf("{\n");
+ printf(" unsigned char c1 = s[0];\n");
+ printf(" if (");
+ for (i = 0; i < enc->ncharsetblocks; i++) {
+ i1_min = enc->row_byte(enc->charsetblocks[i].start / enc->cols);
+ i1_max = enc->row_byte((enc->charsetblocks[i].end-1) / enc->cols);
+ if (i > 0)
+ printf(" || ");
+ if (i1_min == i1_max)
+ printf("(c1 == 0x%02x)", i1_min);
+ else
+ printf("(c1 >= 0x%02x && c1 <= 0x%02x)", i1_min, i1_max);
+ }
+ printf(") {\n");
+ printf(" if (n >= 2) {\n");
+ printf(" unsigned char c2 = s[1];\n");
+ printf(" if (");
+ printf(enc->check_col_expr, "c2");
+ printf(") {\n");
+ printf(" unsigned int i = %d * (", enc->cols);
+ printf(enc->byte_row_expr, "c1");
+ printf(") + (");
+ printf(enc->byte_col_expr, "c2");
+ printf(");\n");
+ printf(" unsigned short wc = 0xfffd;\n");
+ for (i = 0; i < enc->ncharsetblocks; i++) {
+ printf(" ");
+ if (i > 0)
+ printf("} else ");
+ if (i < enc->ncharsetblocks-1)
+ printf("if (i < %d) ", enc->charsetblocks[i+1].start);
+ printf("{\n");
+ printf(" if (i < %d)\n", enc->charsetblocks[i].end);
+ printf(" wc = %s_2uni_page%02x[i", name, enc->row_byte(enc->charsetblocks[i].start / enc->cols));
+ if (enc->charsetblocks[i].start > 0)
+ printf("-%d", enc->charsetblocks[i].start);
+ printf("];\n");
+ }
+ printf(" }\n");
+ printf(" if (wc != 0xfffd) {\n");
+ printf(" *pwc = (ucs4_t) wc;\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOFEW(0);\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf("}\n");
+ printf("\n");
+}
+
+/*
+ * Computes the uni2charset[0x0000..0xffff] array.
+ */
+static void invert (Encoding* enc)
+{
+ int row, col, j;
+
+ enc->uni2charset = (int*) malloc(0x10000*sizeof(int));
+
+ for (j = 0; j < 0x10000; j++)
+ enc->uni2charset[j] = 0;
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ enc->uni2charset[j] = 0x100 * enc->row_byte(row) + enc->col_byte(col);
+ }
+}
+
+/*
+ * Outputs the unicode to charset table and function, using a linear array.
+ * (Suitable if the table is dense.)
+ */
+static void output_uni2charset_dense (const char* name, Encoding* enc)
+{
+ /* Like in 8bit_tab_to_h.c */
+ bool pages[0x100];
+ int line[0x2000];
+ int tableno;
+ struct { int minline; int maxline; int usecount; } tables[0x2000];
+ bool first;
+ int row, col, j, p, j1, j2, t;
+
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ pages[j>>8] = true;
+ }
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ bool all_invalid = true;
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ if (enc->uni2charset[j] != 0)
+ all_invalid = false;
+ }
+ if (all_invalid)
+ line[j1] = -1;
+ else
+ line[j1] = 0;
+ }
+ tableno = 0;
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ if (line[j1] >= 0) {
+ if (tableno > 0
+ && ((j1 > 0 && line[j1-1] == tableno-1)
+ || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
+ && j1 - tables[tableno-1].maxline <= 8))) {
+ line[j1] = tableno-1;
+ tables[tableno-1].maxline = j1;
+ } else {
+ tableno++;
+ line[j1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = j1;
+ }
+ }
+ }
+ for (t = 0; t < tableno; t++) {
+ tables[t].usecount = 0;
+ j1 = 8*tables[t].minline;
+ j2 = 8*(tables[t].maxline+1);
+ for (j = j1; j < j2; j++)
+ if (enc->uni2charset[j] != 0)
+ tables[t].usecount++;
+ }
+ {
+ p = -1;
+ for (t = 0; t < tableno; t++)
+ if (tables[t].usecount > 1) {
+ p = tables[t].minline >> 5;
+ printf("static const unsigned short %s_page%02x[%d] = {\n", name, p, 8*(tables[t].maxline-tables[t].minline+1));
+ for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
+ if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
+ printf(" /* 0x%04x */\n", 8*j1);
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ printf(" 0x%04x,", enc->uni2charset[j]);
+ }
+ printf(" /*0x%02x-0x%02x*/\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
+ }
+ printf("};\n");
+ }
+ if (p >= 0)
+ printf("\n");
+ }
+ printf("static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
+ printf("{\n");
+ printf(" if (n >= 2) {\n");
+ printf(" unsigned short c = 0;\n");
+ first = true;
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0) {
+ if (j1 != tables[t].minline) abort();
+ if (j2 > tables[t].maxline+1) abort();
+ j2 = tables[t].maxline+1;
+ if (first)
+ printf(" ");
+ else
+ printf(" else ");
+ first = false;
+ if (tables[t].usecount == 0) abort();
+ if (tables[t].usecount == 1) {
+ if (j2 != j1+1) abort();
+ for (j = 8*j1; j < 8*j2; j++)
+ if (enc->uni2charset[j] != 0) {
+ printf("if (wc == 0x%04x)\n c = 0x%02x;\n", j, enc->uni2charset[j]);
+ break;
+ }
+ } else {
+ if (j1 == 0) {
+ printf("if (wc < 0x%04x)", 8*j2);
+ } else {
+ printf("if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
+ }
+ printf("\n c = %s_page%02x[wc", name, j1 >> 5);
+ if (tables[t].minline > 0)
+ printf("-0x%04x", 8*j1);
+ printf("];\n");
+ }
+ }
+ j1 = j2;
+ }
+ printf(" if (c != 0) {\n");
+ printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOSMALL;\n");
+ printf("}\n");
+}
+
+/*
+ * Outputs the unicode to charset table and function, using a packed array.
+ * (Suitable if the table is sparse.)
+ */
+static void output_uni2charset_sparse (const char* name, Encoding* enc)
+{
+ bool pages[0x100];
+ Block pageblocks[0x100]; int npageblocks;
+ int indx2charset[0x10000];
+ int summary_indx[0x1000];
+ int summary_used[0x1000];
+ int i, row, col, j, p, j1, j2, indx;
+
+ /* Fill pages[0x100]. */
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ pages[j>>8] = true;
+ }
+
+#if 0
+ for (p = 0; p < 0x100; p++)
+ if (pages[p]) {
+ printf("static const unsigned short %s_page%02x[256] = {\n", name, p);
+ for (j1 = 0; j1 < 32; j1++) {
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++)
+ printf("0x%04x, ", enc->uni2charset[256*p+8*j1+j2]);
+ printf("/""*0x%02x-0x%02x*""/\n", 8*j1, 8*j1+7);
+ }
+ printf("};\n");
+ }
+ printf("\n");
+#endif
+
+ /* Fill summary_indx[] and summary_used[]. */
+ indx = 0;
+ for (j1 = 0; j1 < 0x1000; j1++) {
+ summary_indx[j1] = indx;
+ summary_used[j1] = 0;
+ for (j2 = 0; j2 < 16; j2++) {
+ j = 16*j1+j2;
+ if (enc->uni2charset[j] != 0) {
+ indx2charset[indx++] = enc->uni2charset[j];
+ summary_used[j1] |= (1 << j2);
+ }
+ }
+ }
+
+ /* Fill npageblocks and pageblocks[]. */
+ npageblocks = 0;
+ for (p = 0; p < 0x100; ) {
+ if (pages[p] && (p == 0 || !pages[p-1])) {
+ pageblocks[npageblocks].start = 16*p;
+ do p++; while (p < 0x100 && pages[p]);
+ j1 = 16*p;
+ while (summary_used[j1-1] == 0) j1--;
+ pageblocks[npageblocks].end = j1;
+ npageblocks++;
+ } else
+ p++;
+ }
+
+ printf("static const unsigned short %s_2charset[%d] = {\n", name, indx);
+ for (i = 0; i < indx; ) {
+ if ((i % 8) == 0) printf(" ");
+ printf(" 0x%04x,", indx2charset[i]);
+ i++;
+ if ((i % 8) == 0 || i == indx) printf("\n");
+ }
+ printf("};\n");
+ printf("\n");
+ for (i = 0; i < npageblocks; i++) {
+ printf("static const Summary16 %s_uni2indx_page%02x[%d] = {\n", name,
+ pageblocks[i].start/16, pageblocks[i].end-pageblocks[i].start);
+ for (j1 = pageblocks[i].start; j1 < pageblocks[i].end; ) {
+ if (((16*j1) % 0x100) == 0) printf(" /""* 0x%04x *""/\n", 16*j1);
+ if ((j1 % 4) == 0) printf(" ");
+ printf(" { %4d, 0x%04x },", summary_indx[j1], summary_used[j1]);
+ j1++;
+ if ((j1 % 4) == 0 || j1 == pageblocks[i].end) printf("\n");
+ }
+ printf("};\n");
+ }
+ printf("\n");
+
+ printf("static int\n");
+ printf("%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
+ printf("{\n");
+ printf(" if (n >= 2) {\n");
+ printf(" const Summary16 *summary = NULL;\n");
+ for (i = 0; i < npageblocks; i++) {
+ printf(" ");
+ if (i > 0)
+ printf("else ");
+ printf("if (wc >= 0x%04x && wc < 0x%04x)\n",
+ 16*pageblocks[i].start, 16*pageblocks[i].end);
+ printf(" summary = &%s_uni2indx_page%02x[(wc>>4)", name,
+ pageblocks[i].start/16);
+ if (pageblocks[i].start > 0)
+ printf("-0x%03x", pageblocks[i].start);
+ printf("];\n");
+ }
+ printf(" if (summary) {\n");
+ printf(" unsigned short used = summary->used;\n");
+ printf(" unsigned int i = wc & 0x0f;\n");
+ printf(" if (used & ((unsigned short) 1 << i)) {\n");
+ printf(" unsigned short c;\n");
+ printf(" /* Keep in `used' only the bits 0..i-1. */\n");
+ printf(" used &= ((unsigned short) 1 << i) - 1;\n");
+ printf(" /* Add `summary->indx' and the number of bits set in `used'. */\n");
+ printf(" used = (used & 0x5555) + ((used & 0xaaaa) >> 1);\n");
+ printf(" used = (used & 0x3333) + ((used & 0xcccc) >> 2);\n");
+ printf(" used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);\n");
+ printf(" used = (used & 0x00ff) + (used >> 8);\n");
+ printf(" c = %s_2charset[summary->indx + used];\n", name);
+ printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOSMALL;\n");
+ printf("}\n");
+}
+
+/* ISO-2022/EUC specifics */
+
+static int row_byte_normal (int row) { return 0x21+row; }
+static int col_byte_normal (int col) { return 0x21+col; }
+static int byte_row_normal (int byte) { return byte-0x21; }
+static int byte_col_normal (int byte) { return byte-0x21; }
+
+static void do_normal (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Note: On first sight, the jisx0212_2charset[] table seems to be in order,
+ starting from the charset=0x3021/uni=0x4e02 pair. But it's only mostly in
+ order. There are 75 out-of-order values, scattered all throughout the table.
+ */
+
+static void do_normal_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+/* CNS 11643 specifics - trick to put two tables into one */
+
+static int row_byte_cns11643 (int row) {
+ return 0x100 * (row / 94) + (row % 94) + 0x21;
+}
+static int byte_row_cns11643 (int byte) {
+ return (byte >= 0x100 && byte < 0x200 ? byte-0x121 :
+ byte >= 0x200 && byte < 0x300 ? byte-0x221+94 :
+ byte >= 0x300 && byte < 0x400 ? byte-0x321+2*94 :
+ -1);
+}
+
+static void do_cns11643_only_uni2charset (const char* name)
+{
+ Encoding enc;
+ int j, x;
+
+ enc.rows = 3*94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_cns11643;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_cns11643;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ invert(&enc);
+ /* Move the 2 plane bits into the unused bits 15 and 7. */
+ for (j = 0; j < 0x10000; j++) {
+ x = enc.uni2charset[j];
+ if (x != 0) {
+ if (x & 0x8080) abort();
+ switch (x >> 16) {
+ case 0: /* plane 1 */ x = (x & 0xffff) | 0x0000; break;
+ case 1: /* plane 2 */ x = (x & 0xffff) | 0x0080; break;
+ case 2: /* plane 3 */ x = (x & 0xffff) | 0x8000; break;
+ default: abort();
+ }
+ enc.uni2charset[j] = x;
+ }
+ }
+ output_uni2charset_sparse(name,&enc);
+}
+
+/* GBK specifics */
+
+static int row_byte_gbk1 (int row) {
+ return 0x81+row;
+}
+static int col_byte_gbk1 (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_gbk1 (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_gbk1 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xff)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_gbk1 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_dense(name,&enc);
+}
+
+static void do_gbk1_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+static int row_byte_gbk2 (int row) {
+ return 0x81+row;
+}
+static int col_byte_gbk2 (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_gbk2 (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_gbk2 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xa1)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_gbk2_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 96;
+ enc.row_byte = row_byte_gbk2;
+ enc.col_byte = col_byte_gbk2;
+ enc.byte_row = byte_row_gbk2;
+ enc.byte_col = byte_col_gbk2;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xa1)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+static void do_gbk1_only_uni2charset (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* KSC 5601 specifics */
+
+/*
+ * Reads the charset2uni table from standard input.
+ */
+static void read_table_ksc5601 (Encoding* enc)
+{
+ int row, col, i, i1, i2, c, j;
+
+ enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
+ for (row = 0; row < enc->rows; row++)
+ enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++)
+ enc->charset2uni[row][col] = 0xfffd;
+
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &j) != 1)
+ exit(1);
+ i1 = j >> 8;
+ i2 = j & 0xff;
+ if (scanf(" 0x%x", &j) != 1)
+ exit(1);
+ /* Take only the range covered by KS C 5601.1987-0 = KS C 5601.1989-0
+ = KS X 1001.1992, ignore the rest. */
+ if (!(i1 >= 128+33 && i1 < 128+127 && i2 >= 128+33 && i2 < 128+127))
+ continue; /* KSC5601 specific */
+ i1 &= 0x7f; /* KSC5601 specific */
+ i2 &= 0x7f; /* KSC5601 specific */
+ row = enc->byte_row(i1);
+ col = enc->byte_col(i2);
+ if (row < 0 || col < 0) {
+ fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
+ exit(1);
+ }
+ enc->charset2uni[row][col] = j;
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i1 = 33; i1 < 127; i1++)
+ for (i2 = 33; i2 < 127; i2++) {
+ i = scanf("%x", &j);
+ if (i == EOF)
+ goto read_done;
+ if (i != 1)
+ exit(1);
+ if (j < 0 || j == 0xffff)
+ j = 0xfffd;
+ if (j != 0xfffd) {
+ if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
+ fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
+ exit (1);
+ }
+ enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
+ }
+ }
+ read_done: ;
+ }
+}
+
+static void do_ksc5601 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table_ksc5601(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Big5 specifics */
+
+static int row_byte_big5 (int row) {
+ return 0xa1+row;
+}
+static int col_byte_big5 (int col) {
+ return (col >= 0x3f ? 0x62 : 0x40) + col;
+}
+static int byte_row_big5 (int byte) {
+ if (byte >= 0xa1 && byte < 0xff)
+ return byte-0xa1;
+ else
+ return -1;
+}
+static int byte_col_big5 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0xa1 && byte < 0xff)
+ return byte-0x62;
+ else
+ return -1;
+}
+
+static void do_big5 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 157;
+ enc.row_byte = row_byte_big5;
+ enc.col_byte = col_byte_big5;
+ enc.byte_row = byte_row_big5;
+ enc.byte_col = byte_col_big5;
+ enc.check_row_expr = "%1$s >= 0xa1 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0xa1";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Johab Hangul specifics */
+
+static int row_byte_johab_hangul (int row) {
+ return 0x84+row;
+}
+static int col_byte_johab_hangul (int col) {
+ return (col >= 0x3e ? 0x43 : 0x41) + col;
+}
+static int byte_row_johab_hangul (int byte) {
+ if (byte >= 0x84 && byte < 0xd4)
+ return byte-0x84;
+ else
+ return -1;
+}
+static int byte_col_johab_hangul (int byte) {
+ if (byte >= 0x41 && byte < 0x7f)
+ return byte-0x41;
+ else if (byte >= 0x81 && byte < 0xff)
+ return byte-0x43;
+ else
+ return -1;
+}
+
+static void do_johab_hangul (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 80;
+ enc.cols = 188;
+ enc.row_byte = row_byte_johab_hangul;
+ enc.col_byte = col_byte_johab_hangul;
+ enc.byte_row = byte_row_johab_hangul;
+ enc.byte_col = byte_col_johab_hangul;
+ enc.check_row_expr = "%1$s >= 0x84 && %1$s < 0xd4";
+ enc.check_col_expr = "(%1$s >= 0x41 && %1$s < 0x7f) || (%1$s >= 0x81 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x84";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x81 ? 0x43 : 0x41)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_dense(name,&enc);
+}
+
+/* SJIS specifics */
+
+static int row_byte_sjis (int row) {
+ return (row >= 0x1f ? 0xc1 : 0x81) + row;
+}
+static int col_byte_sjis (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_sjis (int byte) {
+ if (byte >= 0x81 && byte < 0xa0)
+ return byte-0x81;
+ else if (byte >= 0xe0)
+ return byte-0xc1;
+ else
+ return -1;
+}
+static int byte_col_sjis (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xfd)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_sjis (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 188;
+ enc.row_byte = row_byte_sjis;
+ enc.col_byte = col_byte_sjis;
+ enc.byte_row = byte_row_sjis;
+ enc.byte_col = byte_col_sjis;
+ enc.check_row_expr = "(%1$s >= 0x81 && %1$s < 0xa0) || (%1$s >= 0xe0)";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xfd)";
+ enc.byte_row_expr = "%1$s - (%1$s >= 0xe0 ? 0xc1 : 0x81)";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Main program */
+
+int main (int argc, char *argv[])
+{
+ const char* charsetname;
+ const char* name;
+
+ if (argc != 3)
+ exit(1);
+ charsetname = argv[1];
+ name = argv[2];
+
+ output_title(charsetname);
+
+ if (!strcmp(name,"gb2312") || !strcmp(name,"gb12345ext")
+ || !strcmp(name,"jisx0208") || !strcmp(name,"jisx0212"))
+ do_normal(name);
+ else if (!strcmp(name,"cns11643_1") || !strcmp(name,"cns11643_2")
+ || !strcmp(name,"cns11643_3"))
+ do_normal_only_charset2uni(name);
+ else if (!strcmp(name,"cns11643_inv"))
+ do_cns11643_only_uni2charset(name);
+ else if (!strcmp(name,"gbkext1"))
+ do_gbk1_only_charset2uni(name);
+ else if (!strcmp(name,"gbkext2"))
+ do_gbk2_only_charset2uni(name);
+ else if (!strcmp(name,"gbkext_inv"))
+ do_gbk1_only_uni2charset(name);
+ else if (!strcmp(name,"cp936ext"))
+ do_gbk1(name);
+ else if (!strcmp(name,"ksc5601"))
+ do_ksc5601(name);
+ else if (!strcmp(name,"big5") || !strcmp(name,"cp950ext"))
+ do_big5(name);
+ else if (!strcmp(name,"johab_hangul"))
+ do_johab_hangul(name);
+ else if (!strcmp(name,"cp932ext"))
+ do_sjis(name);
+ else
+ exit(1);
+
+ return 0;
+}
diff --git a/src/xlibi18n/lcUniConv/cp1133.h b/src/xlibi18n/lcUniConv/cp1133.h
new file mode 100644
index 00000000..da7f5896
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/cp1133.h
@@ -0,0 +1,92 @@
+/* $XFree86: xc/lib/X11/lcUniConv/cp1133.h,v 1.3 2000/11/29 17:40:28 dawes Exp $ */
+
+/*
+ * IBM-CP1133
+ */
+
+static const unsigned short cp1133_2uni_1[64] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a,
+ 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b,
+ /* 0xb0 */
+ 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5,
+ 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf,
+ /* 0xc0 */
+ 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8,
+ 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd0 */
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca,
+ 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad,
+};
+static const unsigned short cp1133_2uni_2[16] = {
+ /* 0xf0 */
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd,
+};
+
+static int
+cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xe0) {
+ unsigned short wc = cp1133_2uni_1[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else if (c < 0xf0) {
+ }
+ else {
+ unsigned short wc = cp1133_2uni_2[c-0xf0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1133_page00[16] = {
+ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char cp1133_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */
+ 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */
+ 0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */
+ 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */
+ 0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */
+ 0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
+ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
+ 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = cp1133_page00[wc-0x00a0];
+ else if (wc >= 0x0e80 && wc < 0x0ee0)
+ c = cp1133_page0e[wc-0x0e80];
+ else if (wc == 0x20ad)
+ c = 0xdf;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/cp1251.h b/src/xlibi18n/lcUniConv/cp1251.h
new file mode 100644
index 00000000..f3f7577f
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/cp1251.h
@@ -0,0 +1,113 @@
+/* $XFree86: xc/lib/X11/lcUniConv/cp1251.h,v 1.1 2000/12/04 18:49:32 dawes Exp $ */
+
+/*
+ * CP1251
+ */
+
+static const unsigned short cp1251_2uni[128] = {
+ /* 0x80 */
+ 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+ /* 0x90 */
+ 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+ /* 0xa0 */
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ /* 0xc0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xd0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xe0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xf0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+};
+
+static int
+cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = cp1251_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1251_page00[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char cp1251_page04[152] = {
+ 0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
+ 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
+ 0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
+ 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char cp1251_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = cp1251_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0498)
+ c = cp1251_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = cp1251_page20[wc-0x2010];
+ else if (wc == 0x20ac)
+ c = 0x88;
+ else if (wc == 0x2116)
+ c = 0xb9;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/cp1255.h b/src/xlibi18n/lcUniConv/cp1255.h
new file mode 100644
index 00000000..17b843ee
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/cp1255.h
@@ -0,0 +1,121 @@
+/* $XFree86: xc/lib/X11/lcUniConv/cp1255.h,v 1.1 2000/12/04 18:49:33 dawes Exp $ */
+
+/*
+ * CP1255
+ */
+
+static const unsigned short cp1255_2uni[128] = {
+ /* 0x80 */
+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x90 */
+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa0 */
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ /* 0xc0 */
+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+ 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
+ /* 0xd0 */
+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
+ 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ /* 0xf0 */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
+};
+
+static int
+cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = cp1255_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1255_page00[88] = {
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
+};
+static const unsigned char cp1255_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char cp1255_page05[72] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */
+ 0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
+ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+static const unsigned char cp1255_page20[56] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = cp1255_page00[wc-0x00a0];
+ else if (wc == 0x0192)
+ c = 0x83;
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = cp1255_page02[wc-0x02c0];
+ else if (wc >= 0x05b0 && wc < 0x05f8)
+ c = cp1255_page05[wc-0x05b0];
+ else if (wc >= 0x2008 && wc < 0x2040)
+ c = cp1255_page20[wc-0x2008];
+ else if (wc == 0x20aa)
+ c = 0xa4;
+ else if (wc == 0x20ac)
+ c = 0x80;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/cp1256.h b/src/xlibi18n/lcUniConv/cp1256.h
new file mode 100644
index 00000000..5d4051bf
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/cp1256.h
@@ -0,0 +1,135 @@
+/* $XFree86: xc/lib/X11/lcUniConv/cp1256.h,v 1.1 2000/12/04 18:49:34 dawes Exp $ */
+
+/*
+ * CP1256
+ */
+
+static const unsigned short cp1256_2uni[128] = {
+ /* 0x80 */
+ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
+ /* 0x90 */
+ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
+ /* 0xa0 */
+ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
+ /* 0xc0 */
+ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ /* 0xd0 */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
+ 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
+ /* 0xe0 */
+ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
+ 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
+};
+
+static int
+cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) cp1256_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char cp1256_page00[96] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char cp1256_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char cp1256_page06[208] = {
+ 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */
+ 0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */
+ 0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */
+ 0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */
+ 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+};
+static const unsigned char cp1256_page20[56] = {
+ 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = cp1256_page00[wc-0x00a0];
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = cp1256_page01[wc-0x0150];
+ else if (wc == 0x02c6)
+ c = 0x88;
+ else if (wc >= 0x0608 && wc < 0x06d8)
+ c = cp1256_page06[wc-0x0608];
+ else if (wc >= 0x2008 && wc < 0x2040)
+ c = cp1256_page20[wc-0x2008];
+ else if (wc == 0x20ac)
+ c = 0x80;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/gb2312.h b/src/xlibi18n/lcUniConv/gb2312.h
new file mode 100644
index 00000000..7337e0b5
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/gb2312.h
@@ -0,0 +1,2553 @@
+/* $XFree86: xc/lib/X11/lcUniConv/gb2312.h,v 1.4 2001/08/09 19:14:07 dawes Exp $ */
+
+/*
+ * GB2312.1980-0
+ */
+
+static const unsigned short gb2312_2uni_page21[831] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003,
+ 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
+ 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
+ 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
+ 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
+ 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
+ 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
+ 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
+ /* 0x22 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
+ 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
+ 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
+ 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
+ /* 0x23 */
+ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0x24 */
+ 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, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x25 */
+ 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, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0x00ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 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, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x29 */
+ 0xfffd, 0xfffd, 0xfffd, 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,
+};
+static const unsigned short gb2312_2uni_page30[6768] = {
+ /* 0x30 */
+ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
+ 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
+ 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
+ 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
+ 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
+ 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
+ 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
+ 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
+ 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
+ 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
+ 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
+ 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
+ /* 0x31 */
+ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
+ 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
+ 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
+ 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
+ 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
+ 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
+ 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
+ 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
+ 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
+ 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
+ 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
+ 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
+ /* 0x32 */
+ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
+ 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
+ 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
+ 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
+ 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
+ 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
+ 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
+ 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
+ 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
+ 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
+ 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
+ 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
+ /* 0x33 */
+ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
+ 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
+ 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
+ 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
+ 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
+ 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
+ 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
+ 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
+ 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
+ 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
+ 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
+ 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
+ /* 0x34 */
+ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
+ 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
+ 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
+ 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
+ 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
+ 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
+ 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
+ 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
+ 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
+ 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
+ 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
+ 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
+ /* 0x35 */
+ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
+ 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
+ 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
+ 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
+ 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
+ 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
+ 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
+ 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
+ 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
+ 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
+ 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
+ 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
+ /* 0x36 */
+ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
+ 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
+ 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
+ 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
+ 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
+ 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
+ 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
+ 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
+ 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
+ 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
+ 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
+ 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
+ /* 0x37 */
+ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
+ 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
+ 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
+ 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
+ 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
+ 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
+ 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
+ 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
+ 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
+ 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
+ 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
+ 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
+ /* 0x38 */
+ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
+ 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
+ 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
+ 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
+ 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
+ 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
+ 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
+ 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
+ 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
+ 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
+ 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
+ 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
+ /* 0x39 */
+ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
+ 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
+ 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
+ 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
+ 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
+ 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
+ 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
+ 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
+ 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
+ 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
+ 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
+ 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
+ /* 0x3a */
+ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
+ 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
+ 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
+ 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
+ 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
+ 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
+ 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
+ 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
+ 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
+ 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
+ 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
+ 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
+ /* 0x3b */
+ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
+ 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
+ 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
+ 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
+ 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
+ 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
+ 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
+ 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
+ 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
+ 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
+ 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
+ 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
+ /* 0x3c */
+ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
+ 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
+ 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
+ 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
+ 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
+ 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
+ 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
+ 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
+ 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
+ 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
+ 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
+ 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
+ /* 0x3d */
+ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
+ 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
+ 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
+ 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
+ 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
+ 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
+ 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
+ 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
+ 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
+ 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
+ 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
+ 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
+ /* 0x3e */
+ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
+ 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
+ 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
+ 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
+ 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
+ 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
+ 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
+ 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
+ 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
+ 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
+ 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
+ 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
+ /* 0x3f */
+ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
+ 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
+ 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
+ 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
+ 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
+ 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
+ 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
+ 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
+ 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
+ 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
+ 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
+ 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
+ /* 0x40 */
+ 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
+ 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
+ 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
+ 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
+ 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
+ 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
+ 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
+ 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
+ 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
+ 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
+ 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
+ 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
+ /* 0x41 */
+ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
+ 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
+ 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
+ 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
+ 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
+ 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
+ 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
+ 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
+ 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
+ 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
+ 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
+ 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
+ /* 0x42 */
+ 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
+ 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
+ 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
+ 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
+ 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
+ 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
+ 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
+ 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
+ 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
+ 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
+ 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
+ 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
+ /* 0x43 */
+ 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
+ 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
+ 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
+ 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
+ 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
+ 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
+ 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
+ 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
+ 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
+ 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
+ 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
+ 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
+ /* 0x44 */
+ 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
+ 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
+ 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
+ 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
+ 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
+ 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
+ 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
+ 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
+ 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
+ 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
+ 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
+ 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
+ /* 0x45 */
+ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
+ 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
+ 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
+ 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
+ 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
+ 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
+ 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
+ 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
+ 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
+ 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
+ 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
+ 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
+ /* 0x46 */
+ 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
+ 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
+ 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
+ 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
+ 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
+ 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
+ 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
+ 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
+ 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
+ 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
+ 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
+ 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
+ /* 0x47 */
+ 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
+ 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
+ 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
+ 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
+ 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
+ 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
+ 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
+ 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
+ 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
+ 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
+ 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
+ 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
+ /* 0x48 */
+ 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
+ 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
+ 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
+ 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
+ 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
+ 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
+ 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
+ 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
+ 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
+ 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
+ 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
+ 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
+ /* 0x49 */
+ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
+ 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
+ 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
+ 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
+ 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
+ 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
+ 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
+ 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
+ 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
+ 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
+ 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
+ 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
+ /* 0x4a */
+ 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
+ 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
+ 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
+ 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
+ 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
+ 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
+ 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
+ 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
+ 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
+ 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
+ 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
+ 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
+ /* 0x4b */
+ 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
+ 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
+ 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
+ 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
+ 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
+ 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
+ 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
+ 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
+ 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
+ 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
+ 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
+ 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
+ /* 0x4c */
+ 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
+ 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
+ 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
+ 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
+ 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
+ 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
+ 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
+ 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
+ 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
+ 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
+ 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
+ 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
+ /* 0x4d */
+ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
+ 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
+ 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
+ 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
+ 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
+ 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
+ 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
+ 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
+ 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
+ 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
+ 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
+ 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
+ /* 0x4e */
+ 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
+ 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
+ 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
+ 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
+ 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
+ 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
+ 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
+ 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
+ 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
+ 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
+ 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
+ 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
+ /* 0x4f */
+ 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
+ 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
+ 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
+ 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
+ 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
+ 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
+ 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
+ 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
+ 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
+ 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
+ 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
+ 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
+ /* 0x50 */
+ 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
+ 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
+ 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
+ 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
+ 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
+ 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
+ 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
+ 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
+ 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
+ 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
+ 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
+ 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
+ /* 0x51 */
+ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
+ 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
+ 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
+ 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
+ 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
+ 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
+ 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
+ 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
+ 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
+ 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
+ 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
+ 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
+ /* 0x52 */
+ 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
+ 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
+ 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
+ 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
+ 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
+ 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
+ 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
+ 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
+ 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
+ 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
+ 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
+ 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
+ /* 0x53 */
+ 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
+ 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
+ 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
+ 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
+ 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
+ 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
+ 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
+ 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
+ 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
+ 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
+ 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
+ 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
+ /* 0x54 */
+ 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
+ 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
+ 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
+ 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
+ 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
+ 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
+ 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
+ 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
+ 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
+ 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
+ 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
+ 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
+ /* 0x55 */
+ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
+ 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
+ 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
+ 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
+ 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
+ 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
+ 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
+ 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
+ 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
+ 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
+ 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
+ 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
+ /* 0x56 */
+ 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
+ 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
+ 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
+ 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
+ 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
+ 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
+ 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
+ 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
+ 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
+ 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
+ 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
+ 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
+ /* 0x57 */
+ 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
+ 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
+ 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
+ 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
+ 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
+ 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
+ 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
+ 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
+ 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
+ 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
+ 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
+ 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x58 */
+ 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
+ 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
+ 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
+ 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
+ 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
+ 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
+ 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
+ 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
+ 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
+ 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
+ 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
+ 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
+ /* 0x59 */
+ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
+ 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
+ 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
+ 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
+ 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
+ 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
+ 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
+ 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
+ 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
+ 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
+ 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
+ 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
+ /* 0x5a */
+ 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
+ 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
+ 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
+ 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
+ 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
+ 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
+ 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
+ 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
+ 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
+ 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
+ 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
+ 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
+ /* 0x5b */
+ 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
+ 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
+ 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
+ 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
+ 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
+ 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
+ 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
+ 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
+ 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
+ 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
+ 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
+ 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
+ /* 0x5c */
+ 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
+ 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
+ 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
+ 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
+ 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
+ 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
+ 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
+ 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
+ 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
+ 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
+ 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
+ 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
+ /* 0x5d */
+ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
+ 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
+ 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
+ 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
+ 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
+ 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
+ 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
+ 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
+ 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
+ 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
+ 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
+ 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
+ /* 0x5e */
+ 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
+ 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
+ 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
+ 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
+ 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
+ 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
+ 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
+ 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
+ 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
+ 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
+ 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
+ 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
+ /* 0x5f */
+ 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
+ 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
+ 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
+ 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
+ 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
+ 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
+ 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
+ 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
+ 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
+ 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
+ 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
+ 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
+ /* 0x60 */
+ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
+ 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
+ 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
+ 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
+ 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
+ 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
+ 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
+ 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
+ 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
+ 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
+ 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
+ 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
+ /* 0x61 */
+ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
+ 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
+ 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
+ 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
+ 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
+ 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
+ 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
+ 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
+ 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
+ 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
+ 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
+ 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
+ /* 0x62 */
+ 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
+ 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
+ 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
+ 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
+ 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
+ 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
+ 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
+ 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
+ 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
+ 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
+ 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
+ /* 0x63 */
+ 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
+ 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
+ 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
+ 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
+ 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
+ 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
+ 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
+ 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
+ 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
+ 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
+ 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
+ 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
+ /* 0x64 */
+ 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
+ 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
+ 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
+ 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
+ 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
+ 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
+ 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
+ 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
+ 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
+ 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
+ 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
+ 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
+ /* 0x65 */
+ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
+ 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
+ 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
+ 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
+ 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
+ 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
+ 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
+ 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
+ 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
+ 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
+ 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
+ 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
+ /* 0x66 */
+ 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
+ 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
+ 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
+ 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
+ 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
+ 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
+ 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
+ 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
+ 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
+ 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
+ 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
+ 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
+ /* 0x67 */
+ 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
+ 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
+ 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
+ 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
+ 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
+ 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
+ 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
+ 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
+ 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
+ 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
+ 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
+ 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
+ /* 0x68 */
+ 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
+ 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
+ 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
+ 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
+ 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
+ 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
+ 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
+ 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
+ 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
+ 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
+ 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
+ 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
+ /* 0x69 */
+ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
+ 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
+ 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
+ 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
+ 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
+ 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
+ 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
+ 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
+ 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
+ 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
+ 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
+ /* 0x6a */
+ 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
+ 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
+ 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
+ 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
+ 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
+ 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
+ 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
+ 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
+ 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
+ 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
+ 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
+ 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
+ /* 0x6b */
+ 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
+ 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
+ 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
+ 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
+ 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
+ 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
+ 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
+ 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
+ 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
+ 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
+ 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
+ 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
+ /* 0x6c */
+ 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
+ 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
+ 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
+ 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
+ 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
+ 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
+ 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
+ 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
+ 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
+ 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
+ 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
+ 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
+ /* 0x6d */
+ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
+ 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
+ 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
+ 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
+ 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
+ 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+ 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
+ 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
+ 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
+ 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
+ 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
+ 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
+ /* 0x6e */
+ 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
+ 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
+ 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
+ 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
+ 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
+ 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
+ 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
+ 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
+ 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
+ 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
+ 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
+ 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
+ /* 0x6f */
+ 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
+ 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
+ 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
+ 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
+ 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
+ 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
+ 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
+ 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
+ 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
+ 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
+ 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
+ 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
+ /* 0x70 */
+ 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
+ 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
+ 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
+ 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
+ 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
+ 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
+ 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
+ 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
+ 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
+ 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
+ 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
+ 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
+ /* 0x71 */
+ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
+ 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
+ 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
+ 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
+ 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
+ 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
+ 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
+ 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
+ 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
+ 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+ 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
+ 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
+ /* 0x72 */
+ 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
+ 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
+ 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
+ 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
+ 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
+ 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
+ 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
+ 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
+ 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
+ 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
+ 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
+ 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
+ /* 0x73 */
+ 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
+ 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
+ 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
+ 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
+ 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
+ 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
+ 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
+ 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
+ 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
+ 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
+ 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
+ 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
+ /* 0x74 */
+ 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
+ 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
+ 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
+ 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
+ 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
+ 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
+ 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
+ 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
+ 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
+ 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
+ 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
+ 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
+ /* 0x75 */
+ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
+ 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
+ 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
+ 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
+ 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
+ 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
+ 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
+ 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
+ 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
+ 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
+ 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
+ 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
+ /* 0x76 */
+ 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
+ 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
+ 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
+ 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
+ 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
+ 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
+ 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
+ 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
+ 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
+ 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
+ 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
+ /* 0x77 */
+ 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
+ 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
+ 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
+ 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
+ 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
+ 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
+ 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
+ 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
+ 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
+ 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
+ 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
+};
+
+static int
+gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 831)
+ wc = gb2312_2uni_page21[i];
+ } else {
+ if (i < 8178)
+ wc = gb2312_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short gb2312_2charset[7445] = {
+ 0x2168, 0x216c, 0x2127, 0x2163, 0x2140, 0x2141, 0x2824, 0x2822,
+ 0x2828, 0x2826, 0x283a, 0x282c, 0x282a, 0x2830, 0x282e, 0x2142,
+ 0x2834, 0x2832, 0x2839, 0x2821, 0x2825, 0x2827, 0x2829, 0x282d,
+ 0x2831, 0x2823, 0x282b, 0x282f, 0x2833, 0x2835, 0x2836, 0x2837,
+ 0x2838, 0x2126, 0x2125, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625,
+ 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d,
+ 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635,
+ 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645,
+ 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d,
+ 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
+ 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724,
+ 0x2725, 0x2726, 0x2728, 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, 0x2751, 0x2752, 0x2753, 0x2754,
+ 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d,
+ 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
+ 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d,
+ 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x212a, 0x212c, 0x212e,
+ 0x212f, 0x2130, 0x2131, 0x212d, 0x216b, 0x2164, 0x2165, 0x2179,
+ 0x2166, 0x216d, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276,
+ 0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x217b, 0x217c,
+ 0x217a, 0x217d, 0x214a, 0x2147, 0x2146, 0x214c, 0x2158, 0x215e,
+ 0x214f, 0x214e, 0x2144, 0x2145, 0x2149, 0x2148, 0x2152, 0x2153,
+ 0x2160, 0x215f, 0x2143, 0x214b, 0x2157, 0x2156, 0x2155, 0x2159,
+ 0x2154, 0x215c, 0x215d, 0x215a, 0x215b, 0x2151, 0x214d, 0x2150,
+ 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260,
+ 0x2261, 0x2262, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a,
+ 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252,
+ 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2231, 0x2232,
+ 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a,
+ 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242,
+ 0x2243, 0x2244, 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, 0x2176, 0x2175,
+ 0x2178, 0x2177, 0x2174, 0x2173, 0x2170, 0x2172, 0x2171, 0x216f,
+ 0x216e, 0x2162, 0x2161, 0x2121, 0x2122, 0x2123, 0x2128, 0x2129,
+ 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
+ 0x213e, 0x213f, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, 0x2421,
+ 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
+ 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
+ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
+ 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
+ 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
+ 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
+ 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
+ 0x2472, 0x2473, 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,
+ 0x2124, 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, 0x2265, 0x2266,
+ 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e,
+ 0x523b, 0x3621, 0x465f, 0x4d72, 0x5549, 0x487d, 0x494f, 0x4f42,
+ 0x5822, 0x323b, 0x536b, 0x5824, 0x3373, 0x5728, 0x4752, 0x5827,
+ 0x4a40, 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829,
+ 0x362a, 0x413d, 0x514f, 0x4925, 0x582d, 0x3876, 0x513e, 0x635c,
+ 0x5650, 0x3761, 0x342e, 0x4159, 0x583c, 0x4d68, 0x3524, 0x4e2a,
+ 0x5677, 0x4076, 0x3e59, 0x582f, 0x444b, 0x3e43, 0x5831, 0x4334,
+ 0x5265, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, 0x4056, 0x4639,
+ 0x4552, 0x4747, 0x3954, 0x334b, 0x5252, 0x583f, 0x3e45, 0x4672,
+ 0x5232, 0x4f30, 0x4f67, 0x4a69, 0x5840, 0x4272, 0x4252, 0x4869,
+ 0x472c, 0x414b, 0x5368, 0x5579, 0x4a42, 0x367e, 0x5821, 0x535a,
+ 0x3f77, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x5828, 0x5147,
+ 0x5029, 0x583d, 0x596f, 0x4d76, 0x3f3a, 0x3d3b, 0x3a25, 0x5260,
+ 0x327a, 0x3a60, 0x4436, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x4757,
+ 0x5971, 0x5974, 0x484b, 0x5869, 0x525a, 0x4a32, 0x484a, 0x586c,
+ 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, 0x586b, 0x3d71, 0x3d69,
+ 0x4854, 0x3453, 0x4258, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c,
+ 0x3836, 0x4f49, 0x595a, 0x5870, 0x472a, 0x586e, 0x347a, 0x416e,
+ 0x5254, 0x586d, 0x5247, 0x586f, 0x4347, 0x5176, 0x5659, 0x5872,
+ 0x5875, 0x3c7e, 0x3c5b, 0x484e, 0x375d, 0x3742, 0x4673, 0x5878,
+ 0x5241, 0x4e69, 0x3c3f, 0x377c, 0x3725, 0x505d, 0x565a, 0x5345,
+ 0x3b6f, 0x3b61, 0x5871, 0x4921, 0x4e30, 0x342b, 0x5873, 0x494b,
+ 0x5876, 0x4257, 0x5877, 0x4e31, 0x5879, 0x322e, 0x3940, 0x5923,
+ 0x3069, 0x4166, 0x496c, 0x4b45, 0x4b46, 0x5924, 0x3568, 0x352b,
+ 0x4e3b, 0x354d, 0x5721, 0x5774, 0x5353, 0x4c65, 0x3a4e, 0x5922,
+ 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921,
+ 0x4463, 0x5336, 0x5874, 0x595d, 0x587b, 0x4565, 0x4050, 0x5170,
+ 0x305b, 0x3c51, 0x5926, 0x5925, 0x592c, 0x592e, 0x592b, 0x4a39,
+ 0x5929, 0x5636, 0x335e, 0x5928, 0x407d, 0x4a4c, 0x592a, 0x5927,
+ 0x5930, 0x3631, 0x3929, 0x5240, 0x4f40, 0x4242, 0x3d44, 0x556c,
+ 0x3260, 0x4748, 0x3f6b, 0x592d, 0x592f, 0x4e6a, 0x3a6e, 0x4756,
+ 0x3163, 0x3459, 0x366d, 0x5934, 0x3f21, 0x595e, 0x474e, 0x407e,
+ 0x5938, 0x4b57, 0x377d, 0x5935, 0x5937, 0x3123, 0x5361, 0x5939,
+ 0x5045, 0x5936, 0x5931, 0x5932, 0x4129, 0x5933, 0x3c73, 0x505e,
+ 0x3829, 0x3e63, 0x593d, 0x593a, 0x3033, 0x5942, 0x5944, 0x3136,
+ 0x593f, 0x3539, 0x3e73, 0x4c48, 0x3a72, 0x5250, 0x5943, 0x3d68,
+ 0x332b, 0x5945, 0x3e6b, 0x5946, 0x593b, 0x445f, 0x593e, 0x5941,
+ 0x5940, 0x552e, 0x5635, 0x4763, 0x5948, 0x3c59, 0x594a, 0x593c,
+ 0x594b, 0x462b, 0x5949, 0x5776, 0x4d23, 0x3d21, 0x594c, 0x453c,
+ 0x4d35, 0x594d, 0x5947, 0x3325, 0x3f7e, 0x3835, 0x407c, 0x3078,
+ 0x3476, 0x594e, 0x594f, 0x3422, 0x5950, 0x345f, 0x3041, 0x5951,
+ 0x4935, 0x4f71, 0x5952, 0x4145, 0x5956, 0x492e, 0x5955, 0x5954,
+ 0x5957, 0x4b5b, 0x3d29, 0x4627, 0x5953, 0x5958, 0x5959, 0x4865,
+ 0x405c, 0x3679, 0x5823, 0x544a, 0x542a, 0x5056, 0x3364, 0x5557,
+ 0x4f48, 0x3962, 0x3f4b, 0x4362, 0x3652, 0x4d43, 0x596e, 0x5970,
+ 0x3533, 0x3635, 0x3e24, 0x486b, 0x482b, 0x304b, 0x392b, 0x4179,
+ 0x5962, 0x403c, 0x3932, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f,
+ 0x3564, 0x5748, 0x5178, 0x3c66, 0x4a5e, 0x3c3d, 0x5966, 0x5867,
+ 0x445a, 0x3854, 0x483d, 0x3261, 0x5459, 0x4330, 0x4361, 0x5a22,
+ 0x485f, 0x5034, 0x3e7c, 0x4529, 0x395a, 0x5a23, 0x5429, 0x5a24,
+ 0x597b, 0x362c, 0x376b, 0x3179, 0x597c, 0x3365, 0x3e76, 0x3f76,
+ 0x5231, 0x4064, 0x3633, 0x597e, 0x597d, 0x3e3b, 0x4660, 0x573c,
+ 0x5a21, 0x4139, 0x3572, 0x4168, 0x3c75, 0x3455, 0x415d, 0x447d,
+ 0x3c38, 0x3732, 0x376f, 0x596c, 0x463e, 0x3f2d, 0x3b4b, 0x354a,
+ 0x5b49, 0x5057, 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f,
+ 0x5464, 0x3536, 0x3573, 0x5856, 0x4850, 0x3756, 0x4750, 0x5857,
+ 0x3f2f, 0x5b3b, 0x5858, 0x504c, 0x3b2e, 0x6b3e, 0x4150, 0x4175,
+ 0x5472, 0x3855, 0x3434, 0x3375, 0x493e, 0x4550, 0x4559, 0x407b,
+ 0x3170, 0x5859, 0x394e, 0x353d, 0x585a, 0x5646, 0x4b22, 0x482f,
+ 0x4932, 0x344c, 0x3f4c, 0x3974, 0x585b, 0x585c, 0x3667, 0x3c41,
+ 0x4c6a, 0x4f77, 0x585d, 0x4730, 0x3950, 0x3d23, 0x4c5e, 0x464a,
+ 0x5860, 0x585e, 0x585f, 0x307e, 0x3e67, 0x4a23, 0x3c74, 0x3831,
+ 0x386e, 0x5862, 0x3d4b, 0x5864, 0x5863, 0x457c, 0x5865, 0x5866,
+ 0x4126, 0x4830, 0x306c, 0x3926, 0x3c53, 0x4e71, 0x5b3d, 0x4153,
+ 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x4078, 0x3e22,
+ 0x404d, 0x5b40, 0x4a46, 0x322a, 0x5342, 0x4363, 0x512b, 0x5b42,
+ 0x4055, 0x5b43, 0x3f31, 0x443c, 0x475a, 0x5b44, 0x5968, 0x4957,
+ 0x3934, 0x4e70, 0x5448, 0x307c, 0x3452, 0x5059, 0x5969, 0x5e4b,
+ 0x596b, 0x5830, 0x3b2f, 0x3131, 0x3357, 0x584e, 0x5451, 0x3d33,
+ 0x3f6f, 0x4f3b, 0x5850, 0x374b, 0x5851, 0x4625, 0x4778, 0x523d,
+ 0x5852, 0x4464, 0x4a2e, 0x4727, 0x5826, 0x497d, 0x4e67, 0x3b5c,
+ 0x306b, 0x3b2a, 0x502d, 0x3130, 0x5764, 0x573f, 0x3525, 0x4274,
+ 0x444f, 0x3229, 0x3237, 0x3165, 0x5f32, 0x553c, 0x3f28, 0x422c,
+ 0x5855, 0x4231, 0x5854, 0x4e54, 0x5a60, 0x4e40, 0x5834, 0x432e,
+ 0x5321, 0x4e23, 0x3c34, 0x4834, 0x4251, 0x3e6d, 0x5036, 0x5a61,
+ 0x4764, 0x3327, 0x3672, 0x4c7c, 0x407a, 0x4077, 0x5139, 0x5161,
+ 0x5847, 0x325e, 0x4065, 0x3a71, 0x5848, 0x542d, 0x4f61, 0x5849,
+ 0x584a, 0x4f43, 0x3378, 0x3e47, 0x584b, 0x5b4c, 0x4825, 0x4f58,
+ 0x487e, 0x324e, 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734,
+ 0x3722, 0x4a65, 0x4821, 0x4a5c, 0x3164, 0x5070, 0x4551, 0x5b45,
+ 0x357e, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x5f36, 0x5f35, 0x563b,
+ 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, 0x4c28, 0x5f33, 0x4a37,
+ 0x5352, 0x584f, 0x5236, 0x3a45, 0x4b3e, 0x4c3e, 0x5f37, 0x3570,
+ 0x5f34, 0x5375, 0x3354, 0x3877, 0x5f3a, 0x3a4f, 0x3c2a, 0x3575,
+ 0x4d2c, 0x437b, 0x3a73, 0x4074, 0x4d42, 0x4f72, 0x5f38, 0x4f45,
+ 0x4240, 0x5f39, 0x4270, 0x3e7d, 0x415f, 0x4d4c, 0x5277, 0x374d,
+ 0x5f41, 0x5f44, 0x3771, 0x3049, 0x3656, 0x3754, 0x3a2c, 0x4c7d,
+ 0x3f54, 0x4b31, 0x4674, 0x5628, 0x5f45, 0x4e62, 0x3333, 0x4e7c,
+ 0x3435, 0x4e47, 0x3a70, 0x4e61, 0x513d, 0x5f40, 0x3474, 0x334a,
+ 0x3866, 0x5f3b, 0x4445, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f,
+ 0x5f42, 0x5431, 0x5f43, 0x473a, 0x4e58, 0x4458, 0x5f4a, 0x5f4f,
+ 0x565c, 0x5f49, 0x5f5a, 0x4e36, 0x3a47, 0x5f4e, 0x5f48, 0x455e,
+ 0x496b, 0x3a74, 0x437c, 0x3e57, 0x5f46, 0x5f4d, 0x4558, 0x5526,
+ 0x3a4d, 0x3e4c, 0x533d, 0x3840, 0x5664, 0x5f47, 0x393e, 0x3f27,
+ 0x417c, 0x5f4b, 0x5f4c, 0x5f50, 0x5f5b, 0x5f65, 0x5f57, 0x5f56,
+ 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x3f29, 0x545b,
+ 0x3f48, 0x5f54, 0x4f4c, 0x5f5d, 0x514a, 0x5f5e, 0x3027, 0x4637,
+ 0x5f53, 0x3a65, 0x365f, 0x4d5b, 0x397e, 0x5455, 0x5f5f, 0x4f6c,
+ 0x3025, 0x5f67, 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c,
+ 0x3b29, 0x5f60, 0x5f61, 0x5f62, 0x5f66, 0x5f68, 0x5334, 0x3867,
+ 0x4536, 0x5f6a, 0x495a, 0x4128, 0x4444, 0x3f5e, 0x4f78, 0x555c,
+ 0x5f6e, 0x3238, 0x3a5f, 0x5f6c, 0x5b41, 0x5164, 0x4b74, 0x343d,
+ 0x3026, 0x5f71, 0x4c46, 0x5f72, 0x5f6d, 0x5f69, 0x5f6b, 0x5f6f,
+ 0x5f70, 0x3b3d, 0x5f73, 0x5f74, 0x3b23, 0x4a5b, 0x4e28, 0x6027,
+ 0x332a, 0x6026, 0x6021, 0x5f7e, 0x4d59, 0x5f7c, 0x5f7a, 0x3f50,
+ 0x5744, 0x494c, 0x5f78, 0x3021, 0x5f7d, 0x5f7b, 0x6022, 0x6028,
+ 0x3748, 0x4621, 0x4936, 0x4032, 0x5f75, 0x453e, 0x5844, 0x5f79,
+ 0x4476, 0x6023, 0x6024, 0x6025, 0x5025, 0x6034, 0x4c64, 0x6031,
+ 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x402e, 0x602e, 0x3a6d,
+ 0x3a30, 0x6029, 0x5f76, 0x6033, 0x6038, 0x342d, 0x6039, 0x4f32,
+ 0x3a48, 0x6030, 0x507a, 0x602c, 0x547b, 0x5f77, 0x4567, 0x602d,
+ 0x5377, 0x6036, 0x6037, 0x6044, 0x5061, 0x603c, 0x6049, 0x604a,
+ 0x603e, 0x602a, 0x4924, 0x6041, 0x6032, 0x4a48, 0x6043, 0x6035,
+ 0x4e4b, 0x4b43, 0x604d, 0x6046, 0x6042, 0x604b, 0x603a, 0x603f,
+ 0x6040, 0x6045, 0x6047, 0x6048, 0x604c, 0x603b, 0x4b54, 0x6055,
+ 0x6056, 0x6052, 0x6050, 0x3c4e, 0x6051, 0x3842, 0x5845, 0x506a,
+ 0x426f, 0x604f, 0x603d, 0x6054, 0x6053, 0x6057, 0x605c, 0x6058,
+ 0x5676, 0x3330, 0x576c, 0x4b3b, 0x605a, 0x4e7b, 0x3a59, 0x6061,
+ 0x605d, 0x522d, 0x6062, 0x605b, 0x6059, 0x605f, 0x6060, 0x605e,
+ 0x6064, 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x6065, 0x3841,
+ 0x6067, 0x6068, 0x6069, 0x6063, 0x3a3f, 0x4c67, 0x606a, 0x4f79,
+ 0x606b, 0x4842, 0x3d40, 0x4452, 0x606c, 0x606d, 0x4774, 0x4b44,
+ 0x606e, 0x3b58, 0x5836, 0x5272, 0x606f, 0x4d45, 0x365a, 0x6071,
+ 0x5430, 0x4027, 0x3451, 0x4e27, 0x6070, 0x6072, 0x394c, 0x397a,
+ 0x4d3c, 0x6073, 0x4654, 0x6074, 0x5432, 0x4826, 0x6076, 0x6075,
+ 0x6077, 0x4d41, 0x4a25, 0x545a, 0x5b57, 0x5b59, 0x5b58, 0x3967,
+ 0x5b5c, 0x5b5d, 0x3558, 0x5b5a, 0x5b5b, 0x3321, 0x5b5f, 0x3b78,
+ 0x5637, 0x5b60, 0x3e79, 0x373b, 0x5b50, 0x4c2e, 0x3f32, 0x3b35,
+ 0x5778, 0x3f53, 0x3f69, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b,
+ 0x3758, 0x5739, 0x4642, 0x4024, 0x4c39, 0x5b67, 0x5b61, 0x463a,
+ 0x5b63, 0x5b68, 0x4577, 0x5b6a, 0x5b69, 0x3f40, 0x5b66, 0x5b65,
+ 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x504d, 0x5b6d, 0x405d,
+ 0x5b72, 0x3662, 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x3f51,
+ 0x5b70, 0x5b51, 0x3566, 0x5b6b, 0x3f65, 0x5b6e, 0x5b71, 0x5b79,
+ 0x3921, 0x3023, 0x4271, 0x3347, 0x5b6f, 0x5b78, 0x4652, 0x5b74,
+ 0x5b75, 0x5b77, 0x5b76, 0x5b7e, 0x5372, 0x323a, 0x5b7d, 0x5c24,
+ 0x5b7b, 0x5b7a, 0x5b7c, 0x4560, 0x3b79, 0x5c23, 0x5c25, 0x4c43,
+ 0x3651, 0x5d40, 0x5c21, 0x5c22, 0x4735, 0x3669, 0x5c27, 0x5c26,
+ 0x5c29, 0x3124, 0x354c, 0x3f30, 0x515f, 0x3642, 0x5c28, 0x4b7a,
+ 0x6b73, 0x4b5c, 0x4b7e, 0x4c41, 0x487b, 0x5c2a, 0x4c6e, 0x5c2b,
+ 0x5b53, 0x5c2f, 0x5c2c, 0x3e33, 0x4a7b, 0x5c2d, 0x494a, 0x4439,
+ 0x473d, 0x5c2e, 0x5476, 0x5066, 0x442b, 0x3655, 0x5b54, 0x315a,
+ 0x5b55, 0x5b56, 0x3a3e, 0x4840, 0x4a3f, 0x4849, 0x5733, 0x4979,
+ 0x3f47, 0x3a78, 0x523c, 0x623a, 0x3426, 0x3138, 0x3834, 0x4f44,
+ 0x5967, 0x4f26, 0x4d62, 0x596d, 0x3660, 0x5239, 0x393b, 0x6239,
+ 0x6237, 0x3473, 0x4c6c, 0x4c2b, 0x3772, 0x5832, 0x516b, 0x3a3b,
+ 0x4a27, 0x4d37, 0x5244, 0x3f64, 0x3c50, 0x3661, 0x5e45, 0x5e46,
+ 0x5b3c, 0x5159, 0x4666, 0x444e, 0x376e, 0x375c, 0x3f7c, 0x5760,
+ 0x4675, 0x313c, 0x5e48, 0x3d31, 0x4c57, 0x5e4a, 0x5e49, 0x356c,
+ 0x495d, 0x3042, 0x452e, 0x452b, 0x444c, 0x3c69, 0x4b7d, 0x3a43,
+ 0x6579, 0x4867, 0x657a, 0x4d7d, 0x5731, 0x383e, 0x4268, 0x4851,
+ 0x657b, 0x364a, 0x3c4b, 0x517d, 0x6621, 0x436e, 0x6624, 0x657e,
+ 0x6625, 0x4d57, 0x3741, 0x657c, 0x657d, 0x6623, 0x445d, 0x6628,
+ 0x6627, 0x4343, 0x465e, 0x662a, 0x4437, 0x6622, 0x4a3c, 0x3d63,
+ 0x3943, 0x6626, 0x5055, 0x4e2f, 0x6629, 0x6630, 0x5226, 0x3d2a,
+ 0x662d, 0x662f, 0x4051, 0x524c, 0x3c27, 0x6631, 0x5276, 0x574b,
+ 0x4d7e, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, 0x662e, 0x6633,
+ 0x6632, 0x6636, 0x6638, 0x446f, 0x4448, 0x3e6a, 0x496f, 0x6637,
+ 0x3670, 0x4364, 0x5369, 0x6634, 0x6635, 0x4822, 0x663d, 0x6639,
+ 0x4645, 0x4d71, 0x663b, 0x663c, 0x3b69, 0x663e, 0x663a, 0x4037,
+ 0x5324, 0x663f, 0x4974, 0x6643, 0x6644, 0x5076, 0x433d, 0x4344,
+ 0x6642, 0x6641, 0x6647, 0x4f31, 0x6b74, 0x664a, 0x6645, 0x3c5e,
+ 0x4929, 0x3c35, 0x4f53, 0x6648, 0x6649, 0x664e, 0x6650, 0x6651,
+ 0x664b, 0x3555, 0x664c, 0x664f, 0x445b, 0x6646, 0x664d, 0x6652,
+ 0x6654, 0x6653, 0x6655, 0x5978, 0x6656, 0x6657, 0x5753, 0x665d,
+ 0x665e, 0x3f57, 0x5450, 0x5756, 0x3466, 0x4b6f, 0x665a, 0x5843,
+ 0x574e, 0x5022, 0x434f, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127,
+ 0x3a22, 0x424f, 0x582b, 0x4a6b, 0x656e, 0x665c, 0x3775, 0x4866,
+ 0x4475, 0x6532, 0x447e, 0x4b7c, 0x6533, 0x552c, 0x536e, 0x4a58,
+ 0x3032, 0x4b4e, 0x4d6a, 0x3a6a, 0x6535, 0x6534, 0x575a, 0x3959,
+ 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x3368, 0x4973,
+ 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x4f5c, 0x392c, 0x5457,
+ 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x6537, 0x485d, 0x3f6d, 0x3176,
+ 0x4b5e, 0x3c45, 0x3c44, 0x527a, 0x435c, 0x3f5c, 0x383b, 0x4342,
+ 0x3a2e, 0x5422, 0x475e, 0x442f, 0x326c, 0x3951, 0x653b, 0x4148,
+ 0x552f, 0x653c, 0x653e, 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c,
+ 0x4a59, 0x3762, 0x4964, 0x3d2b, 0x4e3e, 0x5770, 0x5021, 0x4959,
+ 0x367b, 0x6658, 0x3c62, 0x333e, 0x4950, 0x6659, 0x3322, 0x5e4c,
+ 0x5348, 0x5e4d, 0x5222, 0x5e4e, 0x3e4d, 0x5e4f, 0x4a2c, 0x527c,
+ 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, 0x3e56, 0x4628,
+ 0x3263, 0x3e53, 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x4a3a, 0x4641,
+ 0x656c, 0x503c, 0x5539, 0x656d, 0x4a74, 0x4d40, 0x4245, 0x656f,
+ 0x4244, 0x6570, 0x6578, 0x4d4d, 0x493d, 0x5259, 0x6128, 0x536c,
+ 0x4b6a, 0x4671, 0x612c, 0x6127, 0x6129, 0x612a, 0x612f, 0x326d,
+ 0x612b, 0x385a, 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x6133,
+ 0x6138, 0x5152, 0x6136, 0x6135, 0x416b, 0x6137, 0x5440, 0x6132,
+ 0x613a, 0x3036, 0x6134, 0x3f79, 0x6139, 0x613b, 0x613e, 0x613c,
+ 0x5645, 0x4f3f, 0x613d, 0x613f, 0x424d, 0x366b, 0x5378, 0x474d,
+ 0x3765, 0x3e7e, 0x6140, 0x6141, 0x6147, 0x3367, 0x4669, 0x345e,
+ 0x5142, 0x6148, 0x6146, 0x6145, 0x6143, 0x6142, 0x3140, 0x5538,
+ 0x6144, 0x614b, 0x614c, 0x614a, 0x6f7a, 0x6153, 0x6152, 0x4736,
+ 0x6149, 0x614e, 0x6150, 0x6154, 0x6151, 0x614d, 0x614f, 0x6155,
+ 0x6156, 0x6157, 0x6158, 0x615a, 0x615b, 0x4e21, 0x675d, 0x3428,
+ 0x565d, 0x5132, 0x3332, 0x3924, 0x5773, 0x4749, 0x3e5e, 0x392e,
+ 0x4e57, 0x326e, 0x5b4f, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x4f6f,
+ 0x5963, 0x3d6d, 0x3152, 0x4a50, 0x323c, 0x4b27, 0x372b, 0x4a26,
+ 0x4f23, 0x6078, 0x554a, 0x607b, 0x607a, 0x4541, 0x4c7b, 0x4131,
+ 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x3478, 0x5621, 0x4f2f,
+ 0x306f, 0x607c, 0x6121, 0x3323, 0x607d, 0x607e, 0x4331, 0x435d,
+ 0x6122, 0x3779, 0x3b4f, 0x6123, 0x443b, 0x6124, 0x6125, 0x6126,
+ 0x3431, 0x3849, 0x463d, 0x446a, 0x3222, 0x5052, 0x675b, 0x3b43,
+ 0x5357, 0x5344, 0x3963, 0x624f, 0x572f, 0x476c, 0x3153, 0x3432,
+ 0x6251, 0x5072, 0x422e, 0x6250, 0x3f62, 0x5326, 0x3557, 0x6252,
+ 0x356a, 0x436d, 0x387d, 0x382e, 0x4553, 0x374f, 0x6254, 0x6253,
+ 0x3648, 0x5779, 0x4d25, 0x6258, 0x6256, 0x4a7c, 0x3f35, 0x5339,
+ 0x6255, 0x6257, 0x412e, 0x4048, 0x625b, 0x625a, 0x402a, 0x414e,
+ 0x625c, 0x625d, 0x625e, 0x5b48, 0x5153, 0x4d22, 0x3d28, 0x5e43,
+ 0x5825, 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x5e44, 0x3157,
+ 0x5f2e, 0x4a3d, 0x5f31, 0x392d, 0x527d, 0x3825, 0x3a6b, 0x335a,
+ 0x355c, 0x5545, 0x4356, 0x4f52, 0x3b21, 0x6573, 0x6572, 0x6574,
+ 0x4d64, 0x4875, 0x352f, 0x473f, 0x6576, 0x6c30, 0x6566, 0x3969,
+ 0x3531, 0x423c, 0x6568, 0x6567, 0x6569, 0x524d, 0x616a, 0x504e,
+ 0x4d2e, 0x5165, 0x324a, 0x316b, 0x3172, 0x456d, 0x5543, 0x5330,
+ 0x615c, 0x615d, 0x525b, 0x3339, 0x314b, 0x4d79, 0x5577, 0x615e,
+ 0x3e36, 0x347d, 0x615f, 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161,
+ 0x506c, 0x4d3d, 0x6162, 0x3543, 0x4547, 0x6163, 0x6164, 0x5379,
+ 0x6165, 0x512d, 0x6166, 0x4e22, 0x6167, 0x3542, 0x6168, 0x3b55,
+ 0x5044, 0x6260, 0x3158, 0x5264, 0x6261, 0x3c49, 0x484c, 0x6263,
+ 0x6c7e, 0x6c7d, 0x5f2f, 0x6262, 0x563e, 0x4d7c, 0x4326, 0x6343,
+ 0x5652, 0x6267, 0x6268, 0x5347, 0x626c, 0x3f6c, 0x626d, 0x6265,
+ 0x3340, 0x446e, 0x626e, 0x5043, 0x3a76, 0x6269, 0x375e, 0x3b33,
+ 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x6277, 0x6274,
+ 0x5475, 0x6273, 0x452d, 0x557a, 0x4542, 0x3240, 0x626f, 0x6272,
+ 0x412f, 0x4b3c, 0x3521, 0x6279, 0x3c31, 0x6271, 0x5054, 0x5439,
+ 0x6275, 0x3956, 0x6276, 0x4753, 0x6270, 0x575c, 0x6d21, 0x6278,
+ 0x6d25, 0x627e, 0x4a51, 0x4135, 0x3b50, 0x3f56, 0x3a63, 0x4b21,
+ 0x6d26, 0x6d23, 0x6d22, 0x3b56, 0x6d27, 0x5074, 0x6d24, 0x3a5e,
+ 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x4f22, 0x4721, 0x3f52,
+ 0x3671, 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x5341,
+ 0x6327, 0x4744, 0x4f24, 0x6329, 0x3a37, 0x6328, 0x3b5a, 0x6323,
+ 0x6324, 0x632a, 0x6326, 0x4e72, 0x5346, 0x3b3c, 0x5443, 0x447a,
+ 0x6d28, 0x507c, 0x6325, 0x4375, 0x632d, 0x312f, 0x6332, 0x3c42,
+ 0x632c, 0x353f, 0x4769, 0x6330, 0x3e2a, 0x4d6f, 0x3b73, 0x4c68,
+ 0x632f, 0x6331, 0x4f27, 0x632e, 0x4e29, 0x3b5d, 0x356b, 0x3e65,
+ 0x3252, 0x334d, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, 0x3668,
+ 0x4f6b, 0x6337, 0x3b4c, 0x4847, 0x504a, 0x6338, 0x336e, 0x6d29,
+ 0x537a, 0x5364, 0x6d2a, 0x6339, 0x5262, 0x6335, 0x535e, 0x3850,
+ 0x6333, 0x6336, 0x375f, 0x6334, 0x4022, 0x633a, 0x5438, 0x3448,
+ 0x633b, 0x3b45, 0x4977, 0x4965, 0x443d, 0x6d2b, 0x427d, 0x3b5b,
+ 0x3f2e, 0x4e3f, 0x633c, 0x3f36, 0x316f, 0x5477, 0x633e, 0x6d2d,
+ 0x633f, 0x3a29, 0x6d2c, 0x633d, 0x6340, 0x3a36, 0x362e, 0x5038,
+ 0x3043, 0x6d2e, 0x6d2f, 0x4041, 0x6341, 0x4533, 0x6342, 0x5c32,
+ 0x6d30, 0x386a, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37,
+ 0x3349, 0x4e52, 0x3d64, 0x635e, 0x3b72, 0x6a28, 0x553d, 0x465d,
+ 0x6a29, 0x6a2a, 0x6a2c, 0x6a2b, 0x6a2e, 0x6a2d, 0x3d58, 0x6a2f,
+ 0x423e, 0x3441, 0x3477, 0x3b27, 0x6c66, 0x6c65, 0x373f, 0x4b79,
+ 0x3162, 0x6c67, 0x4948, 0x6c68, 0x6c69, 0x4a56, 0x5e50, 0x3245,
+ 0x547a, 0x464b, 0x3047, 0x3472, 0x4853, 0x4d50, 0x3f38, 0x3f5b,
+ 0x4724, 0x5634, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067,
+ 0x3336, 0x4845, 0x3062, 0x3776, 0x457a, 0x3673, 0x5552, 0x3350,
+ 0x3c3c, 0x332d, 0x3e71, 0x3051, 0x5256, 0x4a63, 0x5725, 0x4d36,
+ 0x3636, 0x3f39, 0x555b, 0x3827, 0x4557, 0x5e52, 0x3f59, 0x4255,
+ 0x4740, 0x3b24, 0x3128, 0x456a, 0x457b, 0x4c27, 0x3127, 0x3556,
+ 0x4428, 0x5e53, 0x513a, 0x3369, 0x4372, 0x3777, 0x5674, 0x3523,
+ 0x3270, 0x4434, 0x4469, 0x402d, 0x5e54, 0x3068, 0x4544, 0x4160,
+ 0x3955, 0x3e5c, 0x4d58, 0x304e, 0x4d4f, 0x5e56, 0x3e50, 0x573e,
+ 0x5e55, 0x5550, 0x305d, 0x4462, 0x4223, 0x3c70, 0x5335, 0x4039,
+ 0x4521, 0x3226, 0x5471, 0x4028, 0x4a43, 0x5e57, 0x557c, 0x3930,
+ 0x482d, 0x4b29, 0x5e59, 0x3f3d, 0x4634, 0x5727, 0x4a30, 0x4443,
+ 0x3356, 0x3952, 0x5638, 0x6a7c, 0x3034, 0x3f66, 0x4c74, 0x4d5a,
+ 0x563f, 0x424e, 0x4e4e, 0x4c22, 0x502e, 0x4453, 0x3532, 0x5e58,
+ 0x5575, 0x3c37, 0x3b53, 0x3024, 0x4532, 0x346c, 0x5571, 0x6a7d,
+ 0x5e5a, 0x4d26, 0x4d6c, 0x4e66, 0x5e5c, 0x4d31, 0x4026, 0x573d,
+ 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, 0x3e68, 0x3236, 0x404c,
+ 0x4b70, 0x3c71, 0x3b3b, 0x3537, 0x4575, 0x5e66, 0x5e63, 0x3e5d,
+ 0x5e5f, 0x3437, 0x3d5d, 0x5e60, 0x446d, 0x4f46, 0x3560, 0x365e,
+ 0x4a5a, 0x3574, 0x5e65, 0x5546, 0x5e61, 0x4c4d, 0x467e, 0x4545,
+ 0x5234, 0x3e72, 0x4253, 0x4c3d, 0x3338, 0x3d53, 0x3f58, 0x4d46,
+ 0x515a, 0x346b, 0x5e64, 0x5e5d, 0x5e67, 0x6a7e, 0x4230, 0x5e62,
+ 0x5640, 0x3527, 0x3274, 0x5e68, 0x5e72, 0x5e6d, 0x5e71, 0x4860,
+ 0x5761, 0x5e6f, 0x4368, 0x4c61, 0x3265, 0x523e, 0x5e6e, 0x5e6b,
+ 0x4e55, 0x3427, 0x3f2b, 0x3e3e, 0x3d52, 0x5e69, 0x542e, 0x5e5e,
+ 0x5e6a, 0x403f, 0x5e6c, 0x3273, 0x3869, 0x4227, 0x3d41, 0x5e75,
+ 0x5e78, 0x322b, 0x3424, 0x346a, 0x4926, 0x5e76, 0x4b51, 0x3863,
+ 0x5e77, 0x5e7a, 0x5e79, 0x4c42, 0x3061, 0x346e, 0x653a, 0x502f,
+ 0x326b, 0x6b21, 0x5e74, 0x4963, 0x5e73, 0x305a, 0x5221, 0x3177,
+ 0x4c2f, 0x5e70, 0x4b24, 0x552a, 0x5e7b, 0x345d, 0x4426, 0x5e7d,
+ 0x437e, 0x4421, 0x5f21, 0x414c, 0x5e7c, 0x3e6f, 0x4632, 0x3345,
+ 0x4876, 0x4b3a, 0x5e7e, 0x5f24, 0x5732, 0x3337, 0x4143, 0x474b,
+ 0x3225, 0x3469, 0x572b, 0x446c, 0x5f22, 0x5f23, 0x5f25, 0x3a33,
+ 0x5f26, 0x405e, 0x4943, 0x3259, 0x4766, 0x5f27, 0x475c, 0x5f28,
+ 0x6b22, 0x4b53, 0x5f2a, 0x5f29, 0x3241, 0x454a, 0x5f2b, 0x545c,
+ 0x4841, 0x5f2c, 0x3e70, 0x5f2d, 0x5627, 0x6a37, 0x6b36, 0x4a55,
+ 0x587c, 0x3844, 0x3925, 0x3745, 0x557e, 0x394a, 0x5027, 0x744d,
+ 0x3550, 0x4374, 0x3e48, 0x6b37, 0x303d, 0x3d4c, 0x4132, 0x3156,
+ 0x3328, 0x3852, 0x4922, 0x3658, 0x6b38, 0x3e34, 0x4a7d, 0x4743,
+ 0x557b, 0x3773, 0x4e44, 0x552b, 0x3173, 0x6c33, 0x305f, 0x6c35,
+ 0x3637, 0x414f, 0x757a, 0x5031, 0x5565, 0x4e53, 0x3d6f, 0x3362,
+ 0x382b, 0x5536, 0x6d3d, 0x364f, 0x4b39, 0x5042, 0x373d, 0x6c36,
+ 0x4a29, 0x4554, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x507d, 0x6c3a,
+ 0x6c3b, 0x5765, 0x6c3c, 0x6c3d, 0x466c, 0x4e5e, 0x3c48, 0x4855,
+ 0x3529, 0x3e49, 0x563c, 0x5467, 0x512e, 0x5071, 0x6a38, 0x6a39,
+ 0x6a3a, 0x3a35, 0x4a31, 0x3f75, 0x4d7a, 0x6a40, 0x303a, 0x6a3e,
+ 0x4025, 0x6a3b, 0x327d, 0x4377, 0x3b68, 0x5257, 0x4e74, 0x6a3f,
+ 0x6a3c, 0x6a43, 0x5047, 0x5333, 0x343a, 0x4341, 0x5772, 0x5551,
+ 0x4a47, 0x6a45, 0x6a44, 0x6a47, 0x6a46, 0x5667, 0x4f54, 0x6a4b,
+ 0x3b4e, 0x3d7a, 0x494e, 0x6a4c, 0x4939, 0x4f7e, 0x6a4a, 0x544e,
+ 0x6a4d, 0x6a4f, 0x4d6d, 0x6a49, 0x6a4e, 0x4e6e, 0x3b5e, 0x333f,
+ 0x4655, 0x3e30, 0x4e7a, 0x4767, 0x3e27, 0x6a50, 0x5647, 0x4140,
+ 0x545d, 0x6a51, 0x4f3e, 0x6a52, 0x4a6e, 0x452f, 0x3035, 0x6a54,
+ 0x6a53, 0x745f, 0x443a, 0x3129, 0x655f, 0x6a55, 0x4a6f, 0x6a56,
+ 0x6a57, 0x4658, 0x6a58, 0x6a59, 0x543b, 0x477a, 0x5237, 0x387c,
+ 0x6a42, 0x325c, 0x427c, 0x5478, 0x4c66, 0x576e, 0x5442, 0x5350,
+ 0x6b43, 0x4573, 0x377e, 0x6b54, 0x4b37, 0x6b5e, 0x404a, 0x4d7b,
+ 0x332f, 0x465a, 0x6b7c, 0x443e, 0x4e34, 0x4429, 0x313e, 0x547d,
+ 0x4a75, 0x566c, 0x4653, 0x3664, 0x3b7a, 0x5060, 0x4931, 0x5453,
+ 0x4828, 0x384b, 0x683e, 0x493c, 0x683b, 0x406e, 0x5053, 0x3244,
+ 0x3465, 0x683c, 0x5548, 0x3645, 0x683d, 0x4a78, 0x385c, 0x4c75,
+ 0x4034, 0x516e, 0x683f, 0x6842, 0x3a3c, 0x312d, 0x3d5c, 0x6a3d,
+ 0x6843, 0x6846, 0x684b, 0x684c, 0x4b49, 0x3065, 0x3c2b, 0x3939,
+ 0x6841, 0x4d77, 0x684a, 0x4e76, 0x556d, 0x4156, 0x6844, 0x4336,
+ 0x397b, 0x5626, 0x6848, 0x4a60, 0x5466, 0x6840, 0x6845, 0x6847,
+ 0x4739, 0x3763, 0x6849, 0x3f5d, 0x6852, 0x6857, 0x6855, 0x3c5c,
+ 0x3c4f, 0x685b, 0x685e, 0x685a, 0x317a, 0x3058, 0x4433, 0x384c,
+ 0x4662, 0x483e, 0x4861, 0x684f, 0x6854, 0x6856, 0x3971, 0x6858,
+ 0x5775, 0x447b, 0x685c, 0x3269, 0x6851, 0x3c6d, 0x3f42, 0x684d,
+ 0x5679, 0x4178, 0x3271, 0x685f, 0x4a41, 0x6859, 0x5524, 0x316a,
+ 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x685d, 0x4038, 0x4a77,
+ 0x4b28, 0x465c, 0x4075, 0x6869, 0x5023, 0x6872, 0x566a, 0x6860,
+ 0x6861, 0x5179, 0x3a4b, 0x3879, 0x3871, 0x5454, 0x686f, 0x686e,
+ 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x3038, 0x6871,
+ 0x6870, 0x5740, 0x6864, 0x4d29, 0x4923, 0x3b38, 0x3d5b, 0x686a,
+ 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d,
+ 0x3d30, 0x572e, 0x6878, 0x6875, 0x4d30, 0x6876, 0x413a, 0x6868,
+ 0x4337, 0x3070, 0x6874, 0x6877, 0x3923, 0x4952, 0x434e, 0x4e60,
+ 0x4066, 0x4b73, 0x4c5d, 0x5035, 0x4a61, 0x6873, 0x3c6c, 0x6879,
+ 0x435e, 0x4665, 0x3977, 0x3074, 0x5758, 0x3c2c, 0x456f, 0x4c44,
+ 0x6926, 0x492d, 0x6922, 0x4062, 0x3f43, 0x687e, 0x3957, 0x687b,
+ 0x6924, 0x524e, 0x6923, 0x5632, 0x5735, 0x6927, 0x3d37, 0x687c,
+ 0x687d, 0x6921, 0x4d56, 0x522c, 0x6932, 0x6929, 0x342a, 0x343b,
+ 0x692b, 0x5028, 0x6925, 0x337e, 0x692c, 0x4063, 0x692a, 0x6939,
+ 0x6938, 0x692e, 0x687a, 0x6928, 0x3f2c, 0x6931, 0x693a, 0x4225,
+ 0x692f, 0x3845, 0x692d, 0x535c, 0x6934, 0x6935, 0x6937, 0x6947,
+ 0x4046, 0x6945, 0x6930, 0x693b, 0x3071, 0x693c, 0x5525, 0x693e,
+ 0x693f, 0x6941, 0x4171, 0x4836, 0x693d, 0x6942, 0x6943, 0x6933,
+ 0x6936, 0x3b31, 0x6940, 0x3c77, 0x6944, 0x6946, 0x694a, 0x694e,
+ 0x325b, 0x6948, 0x372e, 0x694b, 0x694c, 0x5541, 0x4423, 0x6958,
+ 0x3a61, 0x6949, 0x5323, 0x6954, 0x6957, 0x6950, 0x694f, 0x4741,
+ 0x6952, 0x6959, 0x3348, 0x6953, 0x4f70, 0x694d, 0x3377, 0x6956,
+ 0x695a, 0x4c34, 0x4f2d, 0x6955, 0x695c, 0x695b, 0x695e, 0x6951,
+ 0x695d, 0x695f, 0x434a, 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23,
+ 0x4537, 0x537b, 0x6c24, 0x6c25, 0x465b, 0x3f6e, 0x6c26, 0x6c27,
+ 0x502a, 0x4738, 0x3868, 0x6c28, 0x5639, 0x557d, 0x344b, 0x323d,
+ 0x4e64, 0x4667, 0x4d61, 0x3475, 0x4b40, 0x3c5f, 0x6962, 0x6963,
+ 0x516a, 0x6965, 0x3479, 0x6964, 0x5133, 0x4a62, 0x3250, 0x6968,
+ 0x6966, 0x6967, 0x5633, 0x6969, 0x696a, 0x696b, 0x696c, 0x6c2f,
+ 0x4539, 0x364e, 0x5273, 0x356e, 0x3b59, 0x6c31, 0x5263, 0x4e63,
+ 0x4438, 0x433f, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e,
+ 0x3150, 0x432b, 0x5531, 0x6b24, 0x3a41, 0x4c3a, 0x6b25, 0x6b27,
+ 0x6b28, 0x6b26, 0x6b29, 0x6b2b, 0x6b2a, 0x6b2c, 0x4a4f, 0x5835,
+ 0x4371, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x6b2e, 0x6b2f, 0x6b30,
+ 0x3755, 0x377a, 0x6b31, 0x4762, 0x6b33, 0x3a24, 0x5175, 0x3031,
+ 0x6b32, 0x6b34, 0x352a, 0x4248, 0x4768, 0x6b35, 0x4b2e, 0x635f,
+ 0x5340, 0x595b, 0x4d21, 0x562d, 0x4773, 0x5960, 0x3b63, 0x3a3a,
+ 0x6362, 0x4f2b, 0x6360, 0x4947, 0x3a39, 0x5134, 0x6361, 0x486a,
+ 0x392f, 0x3d2d, 0x3358, 0x4e5b, 0x4c40, 0x6368, 0x6369, 0x4d74,
+ 0x4c2d, 0x3c33, 0x636a, 0x636b, 0x505a, 0x467b, 0x375a, 0x475f,
+ 0x524a, 0x4e56, 0x6364, 0x636c, 0x4972, 0x3341, 0x6367, 0x4663,
+ 0x6365, 0x6d33, 0x6366, 0x4933, 0x4566, 0x3935, 0x433b, 0x6363,
+ 0x453d, 0x4124, 0x4259, 0x3257, 0x636d, 0x3b26, 0x442d, 0x6370,
+ 0x3e5a, 0x637b, 0x6375, 0x3a53, 0x3750, 0x534d, 0x564e, 0x5553,
+ 0x3941, 0x5534, 0x5158, 0x5039, 0x4776, 0x482a, 0x3234, 0x435a,
+ 0x636e, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, 0x373a, 0x4522,
+ 0x6376, 0x455d, 0x3228, 0x467c, 0x4460, 0x5722, 0x4061, 0x6379,
+ 0x637a, 0x637d, 0x4c29, 0x6373, 0x533e, 0x3143, 0x6d34, 0x6371,
+ 0x6372, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x3d60, 0x6427,
+ 0x6426, 0x5173, 0x6423, 0x6429, 0x4877, 0x4f34, 0x6428, 0x642e,
+ 0x4265, 0x3634, 0x3d72, 0x6422, 0x3a69, 0x642a, 0x642c, 0x367d,
+ 0x565e, 0x6432, 0x642d, 0x6421, 0x3b6e, 0x4d5d, 0x4722, 0x4549,
+ 0x4177, 0x6424, 0x4733, 0x3d2c, 0x3d3d, 0x6425, 0x5747, 0x3262,
+ 0x642b, 0x3c43, 0x642f, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x5563,
+ 0x3f23, 0x643a, 0x6437, 0x643b, 0x643d, 0x4656, 0x3a46, 0x404b,
+ 0x3821, 0x6434, 0x5421, 0x3a23, 0x3d7e, 0x643c, 0x4d3f, 0x4479,
+ 0x4f7b, 0x4966, 0x533f, 0x4f51, 0x6433, 0x6438, 0x6439, 0x4c69,
+ 0x4c4e, 0x4054, 0x6435, 0x4130, 0x6436, 0x4e50, 0x3b41, 0x3553,
+ 0x4873, 0x3d27, 0x5547, 0x492c, 0x3822, 0x644a, 0x644c, 0x5144,
+ 0x523a, 0x3a2d, 0x3a54, 0x6443, 0x356d, 0x574d, 0x6440, 0x4f7d,
+ 0x643f, 0x415c, 0x4c4a, 0x4a67, 0x4457, 0x4c54, 0x6448, 0x6447,
+ 0x6441, 0x6444, 0x352d, 0x5359, 0x6446, 0x5279, 0x3463, 0x3b34,
+ 0x496e, 0x343e, 0x3b6c, 0x514d, 0x4c6d, 0x6d35, 0x4765, 0x5428,
+ 0x644b, 0x5755, 0x6442, 0x3d25, 0x6445, 0x5366, 0x6449, 0x4978,
+ 0x643e, 0x5365, 0x477e, 0x3649, 0x547c, 0x3233, 0x6457, 0x4e42,
+ 0x644d, 0x4e3c, 0x385b, 0x6456, 0x3f4a, 0x534e, 0x436c, 0x4548,
+ 0x6458, 0x4d44, 0x644f, 0x6454, 0x6455, 0x3a7e, 0x4f66, 0x553f,
+ 0x6452, 0x6450, 0x644e, 0x4d65, 0x4a2a, 0x4023, 0x3d26, 0x6453,
+ 0x3848, 0x6467, 0x5434, 0x645b, 0x416f, 0x6469, 0x5267, 0x645f,
+ 0x6460, 0x4f2a, 0x4b5d, 0x645a, 0x6451, 0x6465, 0x485c, 0x6463,
+ 0x4467, 0x6462, 0x6461, 0x337c, 0x6468, 0x3561, 0x574c, 0x6466,
+ 0x3b2c, 0x5752, 0x4c4f, 0x6b78, 0x6464, 0x3976, 0x564d, 0x6459,
+ 0x645c, 0x427a, 0x645e, 0x424b, 0x4044, 0x4250, 0x3175, 0x4c32,
+ 0x354e, 0x646f, 0x462f, 0x4661, 0x6475, 0x4229, 0x406c, 0x515d,
+ 0x646e, 0x442e, 0x646d, 0x6476, 0x6474, 0x427e, 0x645d, 0x6470,
+ 0x4a7e, 0x5544, 0x6471, 0x517a, 0x646b, 0x646c, 0x6472, 0x4e2b,
+ 0x454b, 0x4731, 0x423a, 0x646a, 0x414a, 0x4c36, 0x3331, 0x647b,
+ 0x6473, 0x647a, 0x647d, 0x647c, 0x334e, 0x333a, 0x6477, 0x6479,
+ 0x6478, 0x456c, 0x403d, 0x5468, 0x6522, 0x3044, 0x6524, 0x6523,
+ 0x3c24, 0x6525, 0x6521, 0x647e, 0x3174, 0x6528, 0x6529, 0x6526,
+ 0x6527, 0x652a, 0x4659, 0x652b, 0x652d, 0x652c, 0x652f, 0x652e,
+ 0x3960, 0x6530, 0x6531, 0x3b70, 0x6c61, 0x4370, 0x3546, 0x3b52,
+ 0x4169, 0x546e, 0x3e44, 0x5746, 0x5456, 0x3253, 0x6c3e, 0x6a41,
+ 0x422f, 0x3436, 0x5157, 0x3334, 0x4832, 0x3f3b, 0x6c40, 0x564b,
+ 0x6c3f, 0x6c41, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, 0x6c46,
+ 0x317e, 0x6c44, 0x5528, 0x3563, 0x6c42, 0x4136, 0x3363, 0x6c43,
+ 0x4b38, 0x4043, 0x4c7e, 0x4152, 0x6c48, 0x3a66, 0x4053, 0x5672,
+ 0x514c, 0x3f3e, 0x3733, 0x4955, 0x6c47, 0x3b62, 0x4c4c, 0x3d7d,
+ 0x4848, 0x4f29, 0x4d69, 0x456b, 0x3769, 0x5149, 0x3a38, 0x6c49,
+ 0x6c4a, 0x3b40, 0x6c4b, 0x6c62, 0x313a, 0x3759, 0x3d39, 0x6c4c,
+ 0x5166, 0x6c4d, 0x483b, 0x6c51, 0x6c53, 0x3b4d, 0x3c65, 0x6c4f,
+ 0x4937, 0x433a, 0x6c63, 0x5555, 0x6c50, 0x5673, 0x6c52, 0x6c4e,
+ 0x6c54, 0x6c55, 0x493f, 0x4f28, 0x505c, 0x512c, 0x485b, 0x6c56,
+ 0x4e75, 0x4a6c, 0x6c5a, 0x6c59, 0x303e, 0x6c57, 0x6c58, 0x6c64,
+ 0x483c, 0x4147, 0x6c5c, 0x5160, 0x6c5b, 0x546f, 0x6c5d, 0x5b46,
+ 0x6c5e, 0x312c, 0x6c5f, 0x6c60, 0x5726, 0x4540, 0x6b3c, 0x302e,
+ 0x3e74, 0x3838, 0x522f, 0x3056, 0x3579, 0x5833, 0x4b2c, 0x635d,
+ 0x462c, 0x3066, 0x4546, 0x6b39, 0x6b3a, 0x6b3b, 0x5140, 0x4523,
+ 0x6a72, 0x4432, 0x4435, 0x404e, 0x6a73, 0x4441, 0x4e6f, 0x6a70,
+ 0x6a74, 0x497c, 0x4723, 0x4c58, 0x4e7e, 0x6a75, 0x6a76, 0x4f2c,
+ 0x4067, 0x6a77, 0x363f, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a71,
+ 0x482e, 0x616b, 0x3738, 0x616c, 0x616d, 0x5734, 0x616e, 0x616f,
+ 0x534c, 0x6171, 0x3f71, 0x6170, 0x3552, 0x3137, 0x6173, 0x6172,
+ 0x3a7c, 0x6174, 0x3937, 0x3e51, 0x447c, 0x3a5d, 0x3d46, 0x6175,
+ 0x6177, 0x3640, 0x4f41, 0x4a28, 0x6176, 0x5578, 0x537c, 0x6178,
+ 0x617c, 0x6179, 0x617a, 0x406a, 0x617e, 0x6221, 0x4047, 0x617b,
+ 0x617d, 0x6225, 0x4154, 0x6223, 0x6228, 0x327e, 0x6222, 0x434d,
+ 0x3242, 0x6227, 0x6226, 0x6224, 0x6229, 0x622b, 0x5049, 0x566d,
+ 0x4328, 0x622c, 0x4f57, 0x622e, 0x3a6f, 0x6960, 0x622d, 0x622a,
+ 0x3b2b, 0x5433, 0x6230, 0x622f, 0x6961, 0x6231, 0x6232, 0x6233,
+ 0x4c21, 0x6234, 0x6235, 0x507e, 0x424a, 0x5371, 0x4d75, 0x6760,
+ 0x6761, 0x3e41, 0x426a, 0x6764, 0x6763, 0x4d66, 0x4335, 0x6762,
+ 0x3b37, 0x4f56, 0x4161, 0x6769, 0x6768, 0x6774, 0x3223, 0x676a,
+ 0x6766, 0x676c, 0x676b, 0x493a, 0x5564, 0x6765, 0x3729, 0x6767,
+ 0x676e, 0x6773, 0x5669, 0x676d, 0x6772, 0x6771, 0x3060, 0x6775,
+ 0x4772, 0x4045, 0x406d, 0x4170, 0x6770, 0x6776, 0x4b76, 0x6822,
+ 0x6821, 0x5741, 0x677a, 0x6779, 0x677b, 0x6777, 0x677e, 0x677d,
+ 0x677c, 0x4155, 0x4759, 0x457d, 0x4543, 0x476d, 0x6823, 0x6826,
+ 0x6825, 0x6827, 0x3a77, 0x6778, 0x6824, 0x4870, 0x492a, 0x6829,
+ 0x3965, 0x517e, 0x6828, 0x682a, 0x682d, 0x682e, 0x4127, 0x682f,
+ 0x6830, 0x682c, 0x6834, 0x682b, 0x6831, 0x6835, 0x6832, 0x6833,
+ 0x6837, 0x6836, 0x394f, 0x702c, 0x702d, 0x4630, 0x306a, 0x483f,
+ 0x4d5f, 0x4e4d, 0x6a31, 0x6a32, 0x463f, 0x3449, 0x6a33, 0x5567,
+ 0x5d79, 0x6a34, 0x6a35, 0x6a36, 0x384a, 0x5f30, 0x4975, 0x4c70,
+ 0x497a, 0x497b, 0x5343, 0x4b26, 0x3826, 0x702e, 0x3142, 0x6538,
+ 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x3567, 0x4450, 0x3569, 0x6e2e,
+ 0x3b2d, 0x675e, 0x6e2f, 0x3329, 0x6e32, 0x6e31, 0x3d67, 0x6e30,
+ 0x4e37, 0x454f, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x4254, 0x4668,
+ 0x372c, 0x6e34, 0x336b, 0x3b7b, 0x6e35, 0x675c, 0x6e36, 0x3d2e,
+ 0x7162, 0x4a68, 0x5249, 0x705a, 0x705b, 0x705c, 0x4146, 0x386d,
+ 0x3e4e, 0x705e, 0x4531, 0x705d, 0x5171, 0x7060, 0x304c, 0x3d6a,
+ 0x525f, 0x705f, 0x342f, 0x3768, 0x7066, 0x7065, 0x4623, 0x7061,
+ 0x7062, 0x3443, 0x7063, 0x556e, 0x4c5b, 0x3e52, 0x3c32, 0x7068,
+ 0x7067, 0x7064, 0x3221, 0x5622, 0x5338, 0x3e37, 0x482c, 0x706a,
+ 0x5177, 0x564c, 0x3a5b, 0x7069, 0x363b, 0x4d34, 0x4626, 0x4121,
+ 0x706b, 0x706e, 0x706d, 0x7070, 0x706c, 0x3b3e, 0x706f, 0x4c35,
+ 0x7072, 0x3355, 0x3154, 0x7073, 0x7074, 0x7076, 0x3461, 0x7071,
+ 0x7077, 0x707a, 0x7078, 0x7075, 0x707d, 0x7079, 0x707c, 0x707e,
+ 0x7121, 0x4e41, 0x7124, 0x7123, 0x4176, 0x707b, 0x4a5d, 0x3471,
+ 0x3171, 0x4c31, 0x7126, 0x7127, 0x712c, 0x554e, 0x7129, 0x4833,
+ 0x7122, 0x712b, 0x7128, 0x7125, 0x712a, 0x3029, 0x712d, 0x712f,
+ 0x7131, 0x7130, 0x712e, 0x5122, 0x7132, 0x7133, 0x396f, 0x3547,
+ 0x3057, 0x3059, 0x546d, 0x3544, 0x3d54, 0x3b4a, 0x7027, 0x385e,
+ 0x7028, 0x3028, 0x7029, 0x4d6e, 0x702a, 0x702b, 0x4624, 0x5665,
+ 0x7164, 0x7165, 0x4373, 0x535b, 0x5651, 0x4568, 0x532f, 0x5266,
+ 0x6e41, 0x303b, 0x5535, 0x514e, 0x3c60, 0x3a50, 0x3f78, 0x3847,
+ 0x3541, 0x454c, 0x4a22, 0x434b, 0x6e42, 0x443f, 0x3622, 0x6d6c,
+ 0x4324, 0x5631, 0x4f60, 0x6d6f, 0x454e, 0x365c, 0x4a21, 0x6d6d,
+ 0x6d70, 0x6d71, 0x433c, 0x3f34, 0x6d6e, 0x6d74, 0x6d72, 0x5566,
+ 0x435f, 0x6d73, 0x6d76, 0x5523, 0x5123, 0x6d75, 0x4350, 0x6d77,
+ 0x3f74, 0x3e6c, 0x6d78, 0x4c77, 0x515b, 0x5745, 0x5576, 0x6d7c,
+ 0x6d7b, 0x6d79, 0x6d7a, 0x6d7d, 0x3e26, 0x4b2f, 0x6e21, 0x363d,
+ 0x6e22, 0x4440, 0x6d7e, 0x3d5e, 0x3247, 0x3643, 0x6e25, 0x583a,
+ 0x6e23, 0x6e26, 0x4369, 0x3372, 0x6e27, 0x6e24, 0x4f39, 0x6e28,
+ 0x4277, 0x6e29, 0x6e2a, 0x5e2b, 0x4633, 0x4746, 0x5675, 0x3549,
+ 0x4b32, 0x6e2b, 0x4d2b, 0x6e2c, 0x5530, 0x6e2d, 0x7644, 0x5b47,
+ 0x3423, 0x432c, 0x7166, 0x4a38, 0x5253, 0x562a, 0x6f72, 0x3e58,
+ 0x3d43, 0x6f73, 0x364c, 0x302b, 0x4a2f, 0x6d36, 0x6d37, 0x4e79,
+ 0x372f, 0x3f73, 0x6d38, 0x426b, 0x4930, 0x6d39, 0x4676, 0x3f33,
+ 0x6d3c, 0x4578, 0x5150, 0x5729, 0x6d3a, 0x6d3b, 0x5162, 0x6d3f,
+ 0x6d40, 0x6d44, 0x6d48, 0x6d46, 0x6d4e, 0x5568, 0x6d49, 0x6d47,
+ 0x6d3e, 0x4569, 0x4646, 0x4969, 0x5452, 0x6d41, 0x6d42, 0x6d43,
+ 0x6d45, 0x4079, 0x3421, 0x3968, 0x6d50, 0x6d51, 0x6d4a, 0x6d4f,
+ 0x4e78, 0x4b36, 0x6d4c, 0x6d4d, 0x4f75, 0x6d52, 0x4172, 0x5332,
+ 0x6d4b, 0x4837, 0x3c6f, 0x4570, 0x6d56, 0x356f, 0x4235, 0x302d,
+ 0x4b69, 0x312e, 0x6d54, 0x4d6b, 0x3562, 0x6d55, 0x6d53, 0x6d57,
+ 0x357a, 0x6d58, 0x6d59, 0x6d5c, 0x314c, 0x4576, 0x3c6e, 0x6d5a,
+ 0x4c3c, 0x326a, 0x6d5b, 0x446b, 0x3445, 0x3075, 0x6d5f, 0x405a,
+ 0x3468, 0x454d, 0x6d5d, 0x3f44, 0x6d5e, 0x4425, 0x6d60, 0x6d61,
+ 0x6d63, 0x4157, 0x3b47, 0x3d38, 0x6d62, 0x6d64, 0x6d66, 0x6d65,
+ 0x6d67, 0x4a3e, 0x6c6a, 0x4071, 0x4967, 0x6c6b, 0x466e, 0x6c6c,
+ 0x466d, 0x6c6d, 0x6c70, 0x5766, 0x6c73, 0x6c71, 0x6c6e, 0x6c6f,
+ 0x5723, 0x4971, 0x4b6e, 0x6c74, 0x6c72, 0x4f69, 0x6c76, 0x4631,
+ 0x3c40, 0x6c75, 0x353b, 0x3b76, 0x6c77, 0x5977, 0x3d7b, 0x423b,
+ 0x6c78, 0x6c79, 0x3823, 0x6c7a, 0x6c7b, 0x6c7c, 0x536d, 0x582e,
+ 0x406b, 0x475d, 0x3a4c, 0x5063, 0x4b3d, 0x4d3a, 0x3851, 0x317c,
+ 0x476f, 0x5656, 0x3f46, 0x436b, 0x6f75, 0x4358, 0x5762, 0x6f77,
+ 0x3353, 0x4758, 0x516d, 0x5648, 0x6f78, 0x6f76, 0x3b7d, 0x3346,
+ 0x3d55, 0x5246, 0x3b60, 0x4f21, 0x6f7c, 0x6f7b, 0x6f79, 0x334c,
+ 0x4954, 0x4b30, 0x6f7e, 0x305e, 0x5649, 0x6f7d, 0x336d, 0x7655,
+ 0x4e48, 0x7022, 0x7021, 0x353e, 0x3c5a, 0x3b7c, 0x3865, 0x4442,
+ 0x7023, 0x4b6b, 0x7026, 0x5128, 0x3e3f, 0x476e, 0x7136, 0x7137,
+ 0x3f55, 0x3429, 0x7138, 0x4d3b, 0x4754, 0x552d, 0x7139, 0x713a,
+ 0x474f, 0x5224, 0x564f, 0x713b, 0x3d51, 0x3430, 0x3e3d, 0x345c,
+ 0x4e51, 0x3f5f, 0x713d, 0x3f7a, 0x713c, 0x713f, 0x713e, 0x7140,
+ 0x7141, 0x417e, 0x4122, 0x4a7a, 0x553e, 0x3e3a, 0x3e39, 0x5542,
+ 0x3f22, 0x4d2f, 0x7135, 0x3d5f, 0x364b, 0x5671, 0x7343, 0x7344,
+ 0x384d, 0x7346, 0x7347, 0x304a, 0x7345, 0x7349, 0x4b71, 0x734b,
+ 0x5026, 0x314a, 0x7348, 0x734f, 0x3551, 0x7357, 0x7352, 0x7354,
+ 0x7353, 0x377b, 0x313f, 0x734e, 0x734a, 0x355a, 0x7350, 0x7351,
+ 0x7355, 0x734d, 0x3c63, 0x417d, 0x7356, 0x735a, 0x734c, 0x3548,
+ 0x3d6e, 0x735c, 0x3724, 0x3f70, 0x567e, 0x4d32, 0x3470, 0x325f,
+ 0x7358, 0x7359, 0x4938, 0x735d, 0x735e, 0x7361, 0x735f, 0x7363,
+ 0x7362, 0x735b, 0x3f6a, 0x336f, 0x7360, 0x4729, 0x3c72, 0x736b,
+ 0x393f, 0x7364, 0x322d, 0x3b7e, 0x4b63, 0x736d, 0x7369, 0x395c,
+ 0x736e, 0x7365, 0x7366, 0x736a, 0x4261, 0x736c, 0x736f, 0x7368,
+ 0x3c7d, 0x4f64, 0x7370, 0x7367, 0x7372, 0x572d, 0x462a, 0x7373,
+ 0x7371, 0x4228, 0x385d, 0x7375, 0x7374, 0x345b, 0x7376, 0x7377,
+ 0x7378, 0x403a, 0x4069, 0x4571, 0x737b, 0x737a, 0x3458, 0x737e,
+ 0x7379, 0x737c, 0x737d, 0x7421, 0x7423, 0x3b49, 0x7422, 0x7424,
+ 0x323e, 0x7426, 0x7425, 0x3c2e, 0x4357, 0x5961, 0x4060, 0x744c,
+ 0x5751, 0x375b, 0x744e, 0x4123, 0x4649, 0x3456, 0x5533, 0x7450,
+ 0x744f, 0x7451, 0x4b5a, 0x7452, 0x5441, 0x5660, 0x3760, 0x4138,
+ 0x413b, 0x7453, 0x3e2c, 0x3462, 0x7454, 0x7455, 0x3e2b, 0x7456,
+ 0x745b, 0x7457, 0x745a, 0x3a7d, 0x7458, 0x7459, 0x3862, 0x4c47,
+ 0x745c, 0x325a, 0x4353, 0x5463, 0x3f37, 0x745d, 0x4534, 0x7469,
+ 0x4f35, 0x4e49, 0x4b58, 0x4b77, 0x3d74, 0x574f, 0x405b, 0x5075,
+ 0x746a, 0x746b, 0x746c, 0x7763, 0x3731, 0x746d, 0x576b, 0x746e,
+ 0x6679, 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c,
+ 0x3c36, 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x343f,
+ 0x6722, 0x4934, 0x3859, 0x4449, 0x575d, 0x425a, 0x3757, 0x563d,
+ 0x4e46, 0x3744, 0x4526, 0x6723, 0x4f5f, 0x6724, 0x6725, 0x6726,
+ 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, 0x5655, 0x6727, 0x306d,
+ 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, 0x672a, 0x3073, 0x485e,
+ 0x3d61, 0x672b, 0x4846, 0x672c, 0x3b66, 0x3878, 0x5124, 0x672d,
+ 0x4267, 0x3e78, 0x3d4a, 0x4d33, 0x672e, 0x672f, 0x3e6e, 0x5065,
+ 0x4b67, 0x4c50, 0x3c4c, 0x6730, 0x3c28, 0x5077, 0x6731, 0x5078,
+ 0x6732, 0x6733, 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360,
+ 0x6737, 0x3141, 0x3371, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a,
+ 0x424c, 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042,
+ 0x673e, 0x673f, 0x3c29, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742,
+ 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, 0x5435,
+ 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x6749, 0x3278, 0x674a,
+ 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x5327, 0x4b75,
+ 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, 0x6756, 0x6757,
+ 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x3857, 0x4831, 0x733f,
+ 0x7340, 0x7341, 0x395e, 0x4d78, 0x5868, 0x3a31, 0x425e, 0x6e37,
+ 0x3723, 0x6e39, 0x6e38, 0x3055, 0x6e3b, 0x5556, 0x576f, 0x5643,
+ 0x6e3d, 0x4a70, 0x6e3c, 0x6e3e, 0x6e40, 0x6e3f, 0x5172, 0x473c,
+ 0x4340, 0x3861, 0x4167, 0x7446, 0x505f, 0x7447, 0x4f5b, 0x483a,
+ 0x7448, 0x7449, 0x744a, 0x744b, 0x597a, 0x387e, 0x6571, 0x5370,
+ 0x7460, 0x4e4c, 0x3361, 0x7134, 0x526e, 0x7461, 0x4f68, 0x7462,
+ 0x474c, 0x3554, 0x3464, 0x7464, 0x7463, 0x7465, 0x7466, 0x7467,
+ 0x3a32, 0x303f, 0x7468, 0x372d, 0x526d, 0x522b, 0x404f, 0x3f3c,
+ 0x6b23, 0x555f, 0x6a48, 0x7173, 0x3678, 0x4b23, 0x444d, 0x7167,
+ 0x7168, 0x387b, 0x7169, 0x3a44, 0x5445, 0x3052, 0x716a, 0x716b,
+ 0x716c, 0x716d, 0x716e, 0x716f, 0x7171, 0x7170, 0x4555, 0x7172,
+ 0x367a, 0x7174, 0x522e, 0x5e47, 0x4b4a, 0x335c, 0x3522, 0x3922,
+ 0x4474, 0x7175, 0x7176, 0x4144, 0x417b, 0x5630, 0x7177, 0x7178,
+ 0x412a, 0x4638, 0x3e5b, 0x7179, 0x344f, 0x717a, 0x6d32, 0x6d31,
+ 0x4b60, 0x525e, 0x4b41, 0x5558, 0x4862, 0x405f, 0x3c21, 0x6b41,
+ 0x5024, 0x5662, 0x3647, 0x3858, 0x6b40, 0x384e, 0x6b3f, 0x3326,
+ 0x3949, 0x562b, 0x3774, 0x374a, 0x3c67, 0x373e, 0x6b46, 0x6b47,
+ 0x3039, 0x3f4f, 0x6b45, 0x537d, 0x6b48, 0x6b49, 0x374e, 0x6b42,
+ 0x6b44, 0x4976, 0x5657, 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50,
+ 0x3528, 0x3133, 0x6b52, 0x4c25, 0x4556, 0x6b53, 0x6b51, 0x455f,
+ 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x3a7a, 0x5837, 0x7163, 0x6b4a,
+ 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x3f68, 0x5248,
+ 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x3d3a, 0x5058, 0x3037, 0x6b5d,
+ 0x445c, 0x562c, 0x3460, 0x4276, 0x3c39, 0x6b5a, 0x6b5b, 0x5460,
+ 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x3231, 0x6b64, 0x3d45,
+ 0x6b62, 0x6b63, 0x382c, 0x4d51, 0x6b65, 0x6b61, 0x4133, 0x4622,
+ 0x4c73, 0x6b66, 0x4030, 0x5238, 0x6b67, 0x382f, 0x382d, 0x6b68,
+ 0x473b, 0x4d73, 0x6b6a, 0x6b6b, 0x6b6d, 0x5048, 0x6b72, 0x6b6e,
+ 0x6b71, 0x4879, 0x517c, 0x6b6c, 0x6b69, 0x3839, 0x4f59, 0x4465,
+ 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, 0x3072, 0x6b76, 0x6b75, 0x3232,
+ 0x3860, 0x6b77, 0x316c, 0x4c45, 0x4424, 0x4f25, 0x6b79, 0x6c22,
+ 0x4572, 0x6b7a, 0x4945, 0x625f, 0x6b7e, 0x4d4e, 0x6c21, 0x315b,
+ 0x5337, 0x525c, 0x6b7d, 0x6b7b, 0x333c, 0x6a30, 0x5754, 0x742b,
+ 0x3374, 0x5641, 0x5642, 0x5569, 0x3e4a, 0x7427, 0x5228, 0x7428,
+ 0x7429, 0x742a, 0x3e4b, 0x535f, 0x4960, 0x4961, 0x7342, 0x4a66,
+ 0x4c72, 0x6236, 0x4b34, 0x4e68, 0x565b, 0x742d, 0x742e, 0x742f,
+ 0x7432, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x7431, 0x3d22, 0x3255,
+ 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, 0x7434, 0x342c, 0x7435,
+ 0x7438, 0x7439, 0x4d27, 0x743a, 0x743b, 0x743c, 0x4b52, 0x743d,
+ 0x743e, 0x743f, 0x745e, 0x413c, 0x3c68, 0x492b, 0x515e, 0x6575,
+ 0x5c33, 0x5255, 0x5c34, 0x302c, 0x5c35, 0x3d5a, 0x5c39, 0x5842,
+ 0x5c37, 0x5373, 0x4956, 0x5c3a, 0x5c36, 0x5c3b, 0x4322, 0x5c3c,
+ 0x5c45, 0x5c3d, 0x4e5f, 0x5625, 0x5c4f, 0x5c4d, 0x5c52, 0x3d66,
+ 0x422b, 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47,
+ 0x503e, 0x5c41, 0x3b28, 0x373c, 0x5c4c, 0x5c46, 0x5c3f, 0x475b,
+ 0x513f, 0x5c40, 0x5c4a, 0x5c50, 0x4e2d, 0x5c42, 0x5c43, 0x5c48,
+ 0x5c49, 0x3254, 0x5c51, 0x4b55, 0x5437, 0x5c5b, 0x5c5f, 0x4c26,
+ 0x5c66, 0x4367, 0x5c5c, 0x3f41, 0x5c59, 0x307a, 0x3936, 0x5c65,
+ 0x5c53, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x493b, 0x313d, 0x5322,
+ 0x5c5a, 0x5c55, 0x463b, 0x5c5e, 0x5742, 0x432f, 0x3736, 0x4751,
+ 0x4329, 0x5c62, 0x5c58, 0x5c6b, 0x5c54, 0x5c5d, 0x3e25, 0x5c57,
+ 0x5c60, 0x5c63, 0x5c64, 0x5c78, 0x5c61, 0x5d22, 0x5c67, 0x3c6b,
+ 0x3444, 0x4323, 0x3267, 0x5c7a, 0x5c72, 0x5c6f, 0x5c7c, 0x5c6e,
+ 0x5270, 0x3268, 0x4857, 0x4863, 0x5c7b, 0x5c6d, 0x5c77, 0x5c75,
+ 0x3e23, 0x5c74, 0x325d, 0x5c73, 0x3c76, 0x5c68, 0x3b44, 0x4073,
+ 0x3c54, 0x5c69, 0x5c6a, 0x5c71, 0x5c76, 0x5c79, 0x3534, 0x4859,
+ 0x3b67, 0x5c7e, 0x5c7d, 0x532b, 0x5d21, 0x5d23, 0x5d25, 0x5271,
+ 0x5d24, 0x5d26, 0x5d27, 0x5229, 0x3a49, 0x5d29, 0x5d36, 0x5d31,
+ 0x5d34, 0x5d30, 0x464e, 0x4072, 0x492f, 0x5c6c, 0x5d2e, 0x5d37,
+ 0x5c70, 0x5d2f, 0x5d38, 0x5d2c, 0x5d39, 0x5d33, 0x5d2d, 0x442a,
+ 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x5d32, 0x3b71, 0x5d35,
+ 0x5328, 0x5d3a, 0x5d3b, 0x4327, 0x5d52, 0x5d3c, 0x5d51, 0x393d,
+ 0x3e55, 0x3e7a, 0x3a4a, 0x5d4a, 0x5d45, 0x5d3f, 0x324b, 0x5d43,
+ 0x5d4b, 0x3224, 0x5d55, 0x5d3e, 0x4650, 0x5d50, 0x5d54, 0x4162,
+ 0x3746, 0x5d4e, 0x5d4f, 0x5d44, 0x5d3d, 0x5d4d, 0x4c51, 0x5d49,
+ 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, 0x5d48, 0x5d41, 0x5d46,
+ 0x425c, 0x5329, 0x532a, 0x5d53, 0x4f74, 0x4878, 0x5d66, 0x5d47,
+ 0x5d60, 0x4264, 0x5d61, 0x5d57, 0x5678, 0x5d59, 0x5d58, 0x3870,
+ 0x5d56, 0x464f, 0x362d, 0x5d62, 0x3a79, 0x5461, 0x5d67, 0x3450,
+ 0x5d5a, 0x3f7b, 0x5d63, 0x5d5f, 0x5d5d, 0x3559, 0x5d5b, 0x5d5c,
+ 0x5d5e, 0x3d2f, 0x5d64, 0x5d65, 0x5d75, 0x4349, 0x4b62, 0x5d72,
+ 0x5861, 0x4651, 0x5d74, 0x5574, 0x5d73, 0x5d70, 0x5d6c, 0x5d6f,
+ 0x5d68, 0x506e, 0x4858, 0x5d6e, 0x5d69, 0x5d6a, 0x4b72, 0x5d6d,
+ 0x314d, 0x4036, 0x3c3b, 0x5d71, 0x5d77, 0x5d76, 0x5d6b, 0x456e,
+ 0x5d7b, 0x5e24, 0x5e23, 0x5d78, 0x436f, 0x427b, 0x5561, 0x4e35,
+ 0x5d7d, 0x324c, 0x4468, 0x4a5f, 0x473e, 0x5d7a, 0x5d7c, 0x5d7e,
+ 0x5e22, 0x302a, 0x314e, 0x5e2c, 0x5e26, 0x3d36, 0x486f, 0x5e21,
+ 0x5e25, 0x5e29, 0x5e28, 0x5e27, 0x5e2d, 0x544c, 0x5e33, 0x5e2a,
+ 0x5e2e, 0x4059, 0x3121, 0x5e36, 0x5e31, 0x5e32, 0x5126, 0x5e35,
+ 0x5e2f, 0x5e30, 0x503d, 0x5e34, 0x4a6d, 0x5e39, 0x5e38, 0x5e37,
+ 0x5e3b, 0x3d65, 0x3258, 0x436a, 0x5e3a, 0x453a, 0x5e3c, 0x4c59,
+ 0x372a, 0x5465, 0x5e3d, 0x5e3f, 0x4422, 0x5e41, 0x5e3e, 0x5e40,
+ 0x553a, 0x5e42, 0x722e, 0x3b22, 0x4232, 0x4530, 0x4247, 0x722f,
+ 0x5069, 0x535d, 0x6b3d, 0x3366, 0x7230, 0x7231, 0x4a2d, 0x3a67,
+ 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, 0x4a34, 0x524f,
+ 0x426c, 0x4e43, 0x7238, 0x3076, 0x7237, 0x723e, 0x324f, 0x5141,
+ 0x723a, 0x723c, 0x5469, 0x723b, 0x7236, 0x723f, 0x723d, 0x7239,
+ 0x7247, 0x7244, 0x7246, 0x724a, 0x7242, 0x7240, 0x7245, 0x567b,
+ 0x7241, 0x4779, 0x495f, 0x7248, 0x3946, 0x3530, 0x7243, 0x7249,
+ 0x7250, 0x7256, 0x3b57, 0x7255, 0x4d5c, 0x566b, 0x7252, 0x7254,
+ 0x3872, 0x724b, 0x724e, 0x4279, 0x555d, 0x724c, 0x724d, 0x724f,
+ 0x7253, 0x7259, 0x533c, 0x366a, 0x4a71, 0x3764, 0x7257, 0x7258,
+ 0x725a, 0x725d, 0x725b, 0x725c, 0x5151, 0x7251, 0x4d49, 0x4e4f,
+ 0x5629, 0x7263, 0x435b, 0x7260, 0x402f, 0x726c, 0x725e, 0x7261,
+ 0x7268, 0x7262, 0x7267, 0x7266, 0x7269, 0x725f, 0x7264, 0x726a,
+ 0x532c, 0x7265, 0x3275, 0x7272, 0x502b, 0x7275, 0x3b48, 0x7279,
+ 0x7270, 0x7276, 0x7278, 0x727a, 0x7273, 0x7271, 0x3a7b, 0x357b,
+ 0x726f, 0x7277, 0x726d, 0x726e, 0x726b, 0x7326, 0x7323, 0x7322,
+ 0x7274, 0x485a, 0x727b, 0x7325, 0x4378, 0x727d, 0x7327, 0x7329,
+ 0x7324, 0x727c, 0x732b, 0x732a, 0x425d, 0x732e, 0x7330, 0x7321,
+ 0x7331, 0x732c, 0x732f, 0x727e, 0x732d, 0x7332, 0x7334, 0x7328,
+ 0x7333, 0x7335, 0x5037, 0x7338, 0x5979, 0x7339, 0x7337, 0x4864,
+ 0x7336, 0x733a, 0x733b, 0x3440, 0x6e43, 0x733c, 0x733d, 0x512a,
+ 0x742c, 0x5046, 0x5050, 0x515c, 0x4f4e, 0x3d56, 0x5143, 0x3a62,
+ 0x6169, 0x5242, 0x7142, 0x3239, 0x316d, 0x7143, 0x4940, 0x3344,
+ 0x5972, 0x4b25, 0x7144, 0x5654, 0x7145, 0x7440, 0x7146, 0x542c,
+ 0x7147, 0x3040, 0x7441, 0x7442, 0x347c, 0x455b, 0x4c3b, 0x5064,
+ 0x4d60, 0x7148, 0x5973, 0x313b, 0x4f2e, 0x3824, 0x714a, 0x714b,
+ 0x3243, 0x4151, 0x5730, 0x7149, 0x714c, 0x714e, 0x5976, 0x5261,
+ 0x5423, 0x7443, 0x4839, 0x7444, 0x714d, 0x714f, 0x3f63, 0x7150,
+ 0x7154, 0x7156, 0x7151, 0x4951, 0x4561, 0x4263, 0x397c, 0x7153,
+ 0x7155, 0x3953, 0x715b, 0x3a56, 0x307d, 0x7159, 0x7158, 0x7152,
+ 0x715a, 0x7157, 0x486c, 0x4d4a, 0x715d, 0x653d, 0x715c, 0x715e,
+ 0x715f, 0x4f65, 0x7445, 0x3d73, 0x7160, 0x7161, 0x4e77, 0x522a,
+ 0x717b, 0x3832, 0x3c7b, 0x395b, 0x3966, 0x4359, 0x4a53, 0x6a68,
+ 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e,
+ 0x6a6f, 0x3d47, 0x757b, 0x757d, 0x757e, 0x757c, 0x3d62, 0x7621,
+ 0x3425, 0x7622, 0x7623, 0x6c32, 0x5154, 0x596a, 0x7624, 0x6e3a,
+ 0x5532, 0x537e, 0x4c5c, 0x4a44, 0x6540, 0x7625, 0x3e2f, 0x4629,
+ 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27,
+ 0x4c56, 0x4843, 0x5a28, 0x467d, 0x5135, 0x5269, 0x5136, 0x3c47,
+ 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, 0x506d, 0x366f,
+ 0x425b, 0x4b4f, 0x376d, 0x4968, 0x3743, 0x3e77, 0x5624, 0x5a2c,
+ 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x5529, 0x4b5f, 0x556f, 0x5a2e,
+ 0x565f, 0x344a, 0x5a30, 0x5a2f, 0x526b, 0x5a31, 0x5a32, 0x5a33,
+ 0x4a54, 0x5a34, 0x4a2b, 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37,
+ 0x3b30, 0x352e, 0x5a38, 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a,
+ 0x3843, 0x4f6a, 0x326f, 0x5a3b, 0x5a3c, 0x3d6b, 0x4e5c, 0x536f,
+ 0x5a3d, 0x4e73, 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50,
+ 0x5a40, 0x476b, 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c,
+ 0x3f4e, 0x5a43, 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142,
+ 0x573b, 0x5a47, 0x4c38, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51,
+ 0x5a49, 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e,
+ 0x3277, 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x5a53,
+ 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57,
+ 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b,
+ 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948,
+ 0x3b6d, 0x3639, 0x7478, 0x7479, 0x4d63, 0x7539, 0x6b60, 0x4f73,
+ 0x3b3f, 0x3a40, 0x5425, 0x6159, 0x7574, 0x312a, 0x3272, 0x7575,
+ 0x7577, 0x3a51, 0x7576, 0x4332, 0x7579, 0x7578, 0x3134, 0x556a,
+ 0x383a, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75,
+ 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961,
+ 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b,
+ 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f,
+ 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64,
+ 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d,
+ 0x344d, 0x6259, 0x4562, 0x6a66, 0x4035, 0x5738, 0x6a67, 0x572c,
+ 0x487c, 0x5853, 0x584d, 0x545e, 0x5479, 0x4944, 0x532e, 0x3853,
+ 0x3360, 0x4962, 0x7476, 0x3a55, 0x7477, 0x575f, 0x7471, 0x3830,
+ 0x5554, 0x384f, 0x4670, 0x3343, 0x7472, 0x332c, 0x543d, 0x4777,
+ 0x7474, 0x7473, 0x4c4b, 0x4824, 0x7475, 0x5763, 0x453f, 0x7540,
+ 0x753b, 0x7543, 0x7542, 0x563a, 0x7541, 0x543e, 0x7544, 0x754c,
+ 0x304f, 0x3578, 0x7549, 0x754a, 0x455c, 0x7545, 0x7546, 0x7547,
+ 0x754b, 0x3e60, 0x7548, 0x387a, 0x7550, 0x7553, 0x3f67, 0x3972,
+ 0x753c, 0x754d, 0x4237, 0x4c78, 0x3c79, 0x754e, 0x754f, 0x7551,
+ 0x3665, 0x7552, 0x7555, 0x753d, 0x7554, 0x533b, 0x336c, 0x4c24,
+ 0x7556, 0x7557, 0x3e61, 0x7558, 0x4c5f, 0x755b, 0x3248, 0x5759,
+ 0x7559, 0x755a, 0x755c, 0x7562, 0x7560, 0x755f, 0x755d, 0x7561,
+ 0x755e, 0x7564, 0x7565, 0x4c63, 0x653f, 0x3538, 0x7563, 0x7568,
+ 0x4c23, 0x7566, 0x7567, 0x753e, 0x3144, 0x753f, 0x3545, 0x3264,
+ 0x756c, 0x7569, 0x3657, 0x756d, 0x756a, 0x756b, 0x345a, 0x546a,
+ 0x756e, 0x3379, 0x756f, 0x7571, 0x7570, 0x7572, 0x7573, 0x496d,
+ 0x392a, 0x477b, 0x3663, 0x4c49, 0x6a26, 0x3335, 0x547e, 0x396c,
+ 0x5079, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, 0x3a64, 0x696f,
+ 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976,
+ 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, 0x697a, 0x697b,
+ 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, 0x3132, 0x3b54, 0x3975,
+ 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x3778, 0x3c2d, 0x4a64, 0x604e,
+ 0x542f, 0x4f3d, 0x5537, 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c,
+ 0x3447, 0x3159, 0x4031, 0x3166, 0x3167, 0x3168, 0x333d, 0x4868,
+ 0x6541, 0x315f, 0x4149, 0x346f, 0x4728, 0x5358, 0x4679, 0x5138,
+ 0x397d, 0x4275, 0x532d, 0x544b, 0x3d7c, 0x6542, 0x3735, 0x6543,
+ 0x3b39, 0x5562, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, 0x4c76,
+ 0x6546, 0x6544, 0x6548, 0x654a, 0x6547, 0x354f, 0x4648, 0x357c,
+ 0x6545, 0x4a76, 0x6549, 0x4354, 0x3145, 0x3c23, 0x5737, 0x4d4b,
+ 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x5121, 0x5137,
+ 0x654d, 0x6550, 0x4d38, 0x5670, 0x654f, 0x355d, 0x4d3e, 0x6551,
+ 0x363a, 0x4d28, 0x3964, 0x4a45, 0x3351, 0x4b59, 0x546c, 0x6552,
+ 0x376a, 0x654e, 0x6555, 0x347e, 0x6556, 0x6553, 0x6554, 0x525d,
+ 0x425f, 0x3146, 0x5362, 0x365d, 0x4b6c, 0x6557, 0x5376, 0x3169,
+ 0x3674, 0x655a, 0x6558, 0x6559, 0x3540, 0x5245, 0x655c, 0x655e,
+ 0x655d, 0x4732, 0x5223, 0x655b, 0x5462, 0x555a, 0x6560, 0x5771,
+ 0x6561, 0x315c, 0x517b, 0x6562, 0x6564, 0x6563, 0x6565, 0x5258,
+ 0x354b, 0x675f, 0x5a75, 0x5a78, 0x5a76, 0x5a77, 0x5a7a, 0x504f,
+ 0x4447, 0x306e, 0x5030, 0x5a79, 0x534a, 0x3a2a, 0x5b22, 0x4771,
+ 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x5b21, 0x575e, 0x5a7e, 0x415a,
+ 0x5b25, 0x5374, 0x5b27, 0x5b24, 0x5b28, 0x3d3c, 0x4049, 0x5b23,
+ 0x5b26, 0x5623, 0x5b29, 0x5b2d, 0x5b2e, 0x5b2c, 0x3a42, 0x3f24,
+ 0x5b2b, 0x5b2a, 0x5447, 0x323f, 0x5b2f, 0x3979, 0x5b30, 0x333b,
+ 0x3526, 0x363c, 0x5b31, 0x3675, 0x5b32, 0x3149, 0x5b34, 0x5b33,
+ 0x5b35, 0x5b37, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x534f, 0x747a,
+ 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, 0x747b, 0x3e46, 0x506f,
+ 0x3753, 0x544d, 0x4c2a, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56,
+ 0x7524, 0x4052, 0x336a, 0x4d2a, 0x7525, 0x7523, 0x3d34, 0x7528,
+ 0x7529, 0x3d4d, 0x4338, 0x3f61, 0x4b61, 0x752a, 0x7526, 0x7527,
+ 0x4470, 0x752c, 0x343c, 0x576d, 0x3457, 0x752b, 0x752e, 0x752d,
+ 0x752f, 0x5051, 0x4351, 0x4829, 0x7530, 0x7531, 0x7532, 0x7533,
+ 0x7534, 0x7535, 0x7537, 0x7536, 0x7538, 0x3249, 0x5354, 0x4a4d,
+ 0x406f, 0x5658, 0x5230, 0x413f, 0x3d70, 0x382a, 0x3c78, 0x7646,
+ 0x7647, 0x7648, 0x7649, 0x764a, 0x764c, 0x764b, 0x7769, 0x764d,
+ 0x764e, 0x6e44, 0x6e45, 0x6e46, 0x556b, 0x3624, 0x6e48, 0x6e47,
+ 0x6e49, 0x6e4a, 0x4725, 0x6e4b, 0x6e4c, 0x3730, 0x3576, 0x6e4d,
+ 0x6e4f, 0x6e4e, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e,
+ 0x5653, 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755,
+ 0x3e7b, 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525,
+ 0x6e59, 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d,
+ 0x6e5e, 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58,
+ 0x6e64, 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d,
+ 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d,
+ 0x6e6e, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e74, 0x6e73, 0x6e75,
+ 0x4d2d, 0x4241, 0x6e76, 0x6e77, 0x6e78, 0x5521, 0x6e79, 0x4f33,
+ 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875,
+ 0x437a, 0x6f23, 0x6f24, 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26,
+ 0x6f27, 0x5278, 0x6f28, 0x567d, 0x6f29, 0x464c, 0x6f2a, 0x6f2b,
+ 0x4134, 0x6f2c, 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978,
+ 0x6f2f, 0x6f30, 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33,
+ 0x6f34, 0x6f35, 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39,
+ 0x6f3a, 0x5560, 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x6f3d, 0x6f3e,
+ 0x6f3f, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x4f47,
+ 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, 0x434c,
+ 0x6f45, 0x6f46, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, 0x6f4a, 0x4742,
+ 0x6f71, 0x364d, 0x6f4b, 0x6f4c, 0x6f4d, 0x3646, 0x433e, 0x6f4e,
+ 0x6f50, 0x6f51, 0x6f52, 0x5572, 0x6f53, 0x4477, 0x6f54, 0x4478,
+ 0x6f55, 0x6f56, 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x6f5a,
+ 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60,
+ 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, 0x6f68,
+ 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x6f6d, 0x412d, 0x6f6e,
+ 0x6f6f, 0x6f70, 0x4f62, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346,
+ 0x3155, 0x4e4a, 0x3433, 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64,
+ 0x6349, 0x634a, 0x4346, 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b,
+ 0x4376, 0x634c, 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444,
+ 0x634f, 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156,
+ 0x6355, 0x327b, 0x403b, 0x6356, 0x402b, 0x6357, 0x6358, 0x6359,
+ 0x635a, 0x635b, 0x3837, 0x5a62, 0x3653, 0x5a64, 0x5a63, 0x5a66,
+ 0x486e, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x5768,
+ 0x5a68, 0x5a67, 0x3022, 0x4d53, 0x5a69, 0x383d, 0x3c4a, 0x423d,
+ 0x4224, 0x3342, 0x5a6a, 0x422a, 0x4430, 0x3d35, 0x4f5e, 0x5a6b,
+ 0x4942, 0x315d, 0x5a6c, 0x3638, 0x543a, 0x337d, 0x5a6d, 0x5449,
+ 0x4f55, 0x4563, 0x5a6e, 0x5a6f, 0x5a70, 0x416a, 0x4c55, 0x4f5d,
+ 0x5367, 0x4221, 0x5a71, 0x4b65, 0x5a72, 0x4b66, 0x527e, 0x3874,
+ 0x5a73, 0x302f, 0x4f36, 0x554f, 0x4b6d, 0x5a74, 0x6344, 0x4125,
+ 0x763f, 0x7640, 0x7641, 0x4451, 0x4838, 0x5163, 0x505b, 0x5145,
+ 0x3c2f, 0x394d, 0x6f74, 0x3446, 0x533a, 0x7642, 0x337b, 0x7643,
+ 0x3571, 0x7645, 0x536a, 0x7627, 0x5129, 0x7629, 0x7628, 0x4163,
+ 0x4057, 0x3122, 0x4e6d, 0x5068, 0x762b, 0x4f76, 0x762a, 0x5570,
+ 0x762c, 0x4339, 0x3b74, 0x762e, 0x762d, 0x445e, 0x4158, 0x4b2a,
+ 0x4f3c, 0x762f, 0x7630, 0x7631, 0x4236, 0x3054, 0x4579, 0x7632,
+ 0x4760, 0x7626, 0x3e38, 0x3e32, 0x3565, 0x3747, 0x3f3f, 0x4352,
+ 0x4366, 0x584c, 0x386f, 0x3d79, 0x5125, 0x3050, 0x7730, 0x7731,
+ 0x502c, 0x3030, 0x7732, 0x7733, 0x7734, 0x474a, 0x3e4f, 0x7737,
+ 0x7736, 0x315e, 0x7735, 0x7738, 0x7739, 0x4e24, 0x484d, 0x3a2b,
+ 0x6838, 0x6839, 0x683a, 0x3e42, 0x5274, 0x544f, 0x4958, 0x5233,
+ 0x3625, 0x476a, 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67,
+ 0x394b, 0x3659, 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d,
+ 0x416c, 0x4644, 0x3e31, 0x7221, 0x3c55, 0x7222, 0x7223, 0x7224,
+ 0x5243, 0x4635, 0x4d47, 0x7225, 0x5331, 0x3f45, 0x4c62, 0x7226,
+ 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, 0x355f, 0x722a, 0x722b,
+ 0x327c, 0x722c, 0x722d, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x6c2b,
+ 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x4a33, 0x6238, 0x774f,
+ 0x7750, 0x324d, 0x7751, 0x7753, 0x7752, 0x623b, 0x3c22, 0x623c,
+ 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24,
+ 0x4a4e, 0x3125, 0x4b47, 0x6242, 0x367c, 0x4844, 0x6243, 0x3d48,
+ 0x317d, 0x6244, 0x3676, 0x6245, 0x4459, 0x6246, 0x4f5a, 0x395d,
+ 0x6247, 0x4021, 0x6248, 0x3276, 0x6249, 0x4173, 0x624a, 0x624b,
+ 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, 0x5965, 0x4f63,
+ 0x7025, 0x5c30, 0x426d, 0x5426, 0x4d54, 0x5131, 0x335b, 0x477d,
+ 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, 0x6662, 0x3e54, 0x6663,
+ 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, 0x6666, 0x6667, 0x426e,
+ 0x3d3e, 0x6668, 0x4266, 0x3a27, 0x6669, 0x666a, 0x3352, 0x5169,
+ 0x3f25, 0x666b, 0x466f, 0x666c, 0x666d, 0x666e, 0x462d, 0x666f,
+ 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, 0x6674, 0x4262,
+ 0x6675, 0x6676, 0x5668, 0x6677, 0x6678, 0x3947, 0x773b, 0x773a,
+ 0x773e, 0x773c, 0x3a21, 0x773f, 0x7740, 0x7742, 0x7741, 0x7744,
+ 0x7743, 0x7745, 0x7746, 0x7747, 0x4b68, 0x385f, 0x7754, 0x7755,
+ 0x7756, 0x7758, 0x775a, 0x7757, 0x775b, 0x7759, 0x5757, 0x775c,
+ 0x775d, 0x775e, 0x775f, 0x7760, 0x5b4b, 0x582a, 0x6577, 0x396d,
+ 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x774a, 0x774c, 0x774b,
+ 0x774d, 0x4e3a, 0x774e, 0x4427, 0x5363, 0x764f, 0x4233, 0x7650,
+ 0x7651, 0x7652, 0x7653, 0x7654, 0x7656, 0x312b, 0x7657, 0x7658,
+ 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x4f4a, 0x765f,
+ 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666,
+ 0x7667, 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e,
+ 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x3e28, 0x7675,
+ 0x7676, 0x7677, 0x7678, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c,
+ 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726,
+ 0x7727, 0x7728, 0x316e, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d,
+ 0x415b, 0x772e, 0x772f, 0x4471, 0x702f, 0x3c26, 0x7030, 0x4379,
+ 0x4538, 0x513b, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c,
+ 0x516c, 0x7037, 0x7036, 0x5427, 0x4d52, 0x7038, 0x703a, 0x7039,
+ 0x703b, 0x703c, 0x386b, 0x703d, 0x3a68, 0x703e, 0x703f, 0x3e69,
+ 0x7040, 0x366c, 0x7041, 0x7042, 0x7043, 0x7044, 0x4835, 0x7045,
+ 0x7046, 0x7047, 0x4574, 0x7048, 0x7049, 0x704a, 0x773d, 0x704b,
+ 0x704c, 0x704d, 0x704e, 0x704f, 0x3a57, 0x7050, 0x7051, 0x7052,
+ 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x5325, 0x7057, 0x7059,
+ 0x753a, 0x4239, 0x7764, 0x7765, 0x7766, 0x7767, 0x7768, 0x4234,
+ 0x776a, 0x776b, 0x4273, 0x7470, 0x746f, 0x4269, 0x7761, 0x7762,
+ 0x3b46, 0x5964, 0x4a72, 0x4068, 0x7024, 0x3a5a, 0x472d, 0x442c,
+ 0x776c, 0x776d, 0x776e, 0x7770, 0x776f, 0x7771, 0x7774, 0x7773,
+ 0x7772, 0x7775, 0x7776, 0x6d69, 0x6d6a, 0x6d6b, 0x763c, 0x763d,
+ 0x763e, 0x3626, 0x583e, 0x3944, 0x583b, 0x5c31, 0x4a73, 0x7777,
+ 0x7778, 0x7779, 0x777b, 0x777a, 0x3147, 0x777c, 0x777d, 0x777e,
+ 0x466b, 0x6c34, 0x335d, 0x7633, 0x7634, 0x4164, 0x7635, 0x7636,
+ 0x7637, 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x417a, 0x3928,
+ 0x6d68, 0x396a, 0x595f, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325,
+ 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 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,
+ 0x212b, 0x2169, 0x216a, 0x237e, 0x2324,
+};
+
+static const Summary16 gb2312_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0190 }, { 3, 0x0003 },
+ { 5, 0x0000 }, { 5, 0x0080 }, { 6, 0x3703 }, { 13, 0x168c },
+ /* 0x0100 */
+ { 19, 0x0002 }, { 20, 0x0808 }, { 22, 0x0800 }, { 23, 0x0000 },
+ { 23, 0x2000 }, { 24, 0x0000 }, { 24, 0x0800 }, { 25, 0x0000 },
+ { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 },
+ { 25, 0x4000 }, { 26, 0x1555 }, { 33, 0x0000 }, { 33, 0x0000 },
+ /* 0x0200 */
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0280 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ /* 0x0300 */
+ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ { 35, 0x0000 }, { 35, 0xfffe }, { 50, 0x03fb }, { 59, 0xfffe },
+ { 74, 0x03fb }, { 83, 0x0000 }, { 83, 0x0000 }, { 83, 0x0000 },
+ /* 0x0400 */
+ { 83, 0x0002 }, { 84, 0xffff }, { 100, 0xffff }, { 116, 0xffff },
+ { 132, 0xffff }, { 148, 0x0002 },
+};
+static const Summary16 gb2312_uni2indx_page20[101] = {
+ /* 0x2000 */
+ { 149, 0x0000 }, { 149, 0x3360 }, { 155, 0x0040 }, { 156, 0x080d },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ /* 0x2100 */
+ { 160, 0x0008 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0000 },
+ { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0fff }, { 174, 0x0000 },
+ { 174, 0x0000 }, { 174, 0x000f }, { 178, 0x0000 }, { 178, 0x0000 },
+ { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 },
+ /* 0x2200 */
+ { 178, 0x8100 }, { 180, 0x6402 }, { 184, 0x4fa1 }, { 192, 0x20f0 },
+ { 197, 0x1100 }, { 199, 0x0000 }, { 199, 0xc033 }, { 205, 0x0000 },
+ { 205, 0x0000 }, { 205, 0x0200 }, { 206, 0x0020 }, { 207, 0x0000 },
+ { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 },
+ /* 0x2300 */
+ { 207, 0x0000 }, { 207, 0x0004 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ /* 0x2400 */
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x03ff }, { 218, 0xfff0 },
+ { 230, 0xffff }, { 246, 0x0fff }, { 258, 0x0000 }, { 258, 0x0000 },
+ { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 },
+ /* 0x2500 */
+ { 258, 0xffff }, { 274, 0xffff }, { 290, 0xffff }, { 306, 0xffff },
+ { 322, 0x0fff }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 },
+ { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0003 }, { 336, 0x000c },
+ { 338, 0xc8c0 }, { 343, 0x0000 }, { 343, 0x0000 }, { 343, 0x0000 },
+ /* 0x2600 */
+ { 343, 0x0060 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
+ { 345, 0x0005 },
+};
+static const Summary16 gb2312_uni2indx_page30[35] = {
+ /* 0x3000 */
+ { 347, 0xff2f }, { 360, 0x00fb }, { 367, 0x0000 }, { 367, 0x0000 },
+ { 367, 0xfffe }, { 382, 0xffff }, { 398, 0xffff }, { 414, 0xffff },
+ { 430, 0xffff }, { 446, 0x000f }, { 450, 0xfffe }, { 465, 0xffff },
+ { 481, 0xffff }, { 497, 0xffff }, { 513, 0xffff }, { 529, 0x087f },
+ /* 0x3100 */
+ { 537, 0xffe0 }, { 548, 0xffff }, { 564, 0x03ff }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ /* 0x3200 */
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x03ff },
+};
+static const Summary16 gb2312_uni2indx_page4e[1263] = {
+ /* 0x4e00 */
+ { 584, 0x7f8b }, { 595, 0x7f7b }, { 608, 0x3db4 }, { 617, 0xef55 },
+ { 628, 0xfba8 }, { 638, 0xf35d }, { 649, 0x0243 }, { 653, 0x400b },
+ { 657, 0xfb40 }, { 665, 0x8d3e }, { 674, 0x7bf7 }, { 687, 0x8c2c },
+ { 693, 0x6eff }, { 706, 0xe3fa }, { 717, 0x1d3a }, { 725, 0xa8ed },
+ /* 0x4f00 */
+ { 734, 0xe602 }, { 740, 0xcf83 }, { 749, 0x8cf5 }, { 758, 0x3555 },
+ { 766, 0xe048 }, { 771, 0xffab }, { 784, 0x92b9 }, { 792, 0xd859 },
+ { 800, 0xab18 }, { 807, 0x2892 }, { 812, 0xd7e9 }, { 823, 0x8020 },
+ { 825, 0xc438 }, { 831, 0xf583 }, { 840, 0xe74a }, { 849, 0x450a },
+ /* 0x5000 */
+ { 854, 0xb000 }, { 857, 0x9714 }, { 864, 0x7762 }, { 873, 0x5400 },
+ { 876, 0xd188 }, { 882, 0x1420 }, { 885, 0x1020 }, { 887, 0xc8c0 },
+ { 892, 0x2121 }, { 896, 0x0000 }, { 896, 0x13a8 }, { 902, 0x0c04 },
+ { 905, 0x8000 }, { 906, 0x0440 }, { 908, 0x70c0 }, { 913, 0x0828 },
+ /* 0x5100 */
+ { 916, 0x08c0 }, { 919, 0x0004 }, { 920, 0x0002 }, { 921, 0x8000 },
+ { 922, 0x2b7b }, { 932, 0x1472 }, { 938, 0x7924 }, { 945, 0x3bfb },
+ { 957, 0x3327 }, { 965, 0x1ae4 }, { 972, 0x9835 }, { 979, 0x38ef },
+ { 989, 0x9ad1 }, { 997, 0x2802 }, { 1000, 0xa813 }, { 1006, 0xbf69 },
+ /* 0x5200 */
+ { 1017, 0x65cf }, { 1027, 0x2fc6 }, { 1036, 0x6b11 }, { 1043, 0xafc9 },
+ { 1053, 0x340f }, { 1060, 0x5053 }, { 1066, 0x86a2 }, { 1072, 0xa004 },
+ { 1075, 0x0106 }, { 1078, 0xe809 }, { 1084, 0x3f0f }, { 1094, 0xc00e },
+ { 1099, 0x0a88 }, { 1103, 0x8145 }, { 1108, 0x0010 }, { 1109, 0xc601 },
+ /* 0x5300 */
+ { 1114, 0xa161 }, { 1120, 0x26e1 }, { 1127, 0x444b }, { 1133, 0xce00 },
+ { 1138, 0xc7aa }, { 1147, 0xd4ee }, { 1157, 0xcadf }, { 1168, 0x85bb },
+ { 1177, 0x3a74 }, { 1185, 0xa520 }, { 1190, 0x436c }, { 1197, 0x8840 },
+ { 1200, 0x3f06 }, { 1208, 0x8bd2 }, { 1216, 0xff79 }, { 1229, 0x3bef },
+ /* 0x5400 */
+ { 1241, 0xf75a }, { 1252, 0xe8ef }, { 1263, 0xfbcb }, { 1275, 0x5b36 },
+ { 1284, 0x0d49 }, { 1290, 0x1bfd }, { 1301, 0x0154 }, { 1305, 0x39ee },
+ { 1315, 0xd855 }, { 1323, 0x2e75 }, { 1332, 0xbfd8 }, { 1343, 0xa91a },
+ { 1350, 0xf3d7 }, { 1362, 0xf6bf }, { 1375, 0x67e0 }, { 1383, 0xb40c },
+ /* 0x5500 */
+ { 1389, 0x82c2 }, { 1394, 0x0813 }, { 1398, 0xd49d }, { 1407, 0xd08b },
+ { 1414, 0x065a }, { 1420, 0x1061 }, { 1424, 0x74f2 }, { 1433, 0x59e0 },
+ { 1440, 0x8f9f }, { 1451, 0xb312 }, { 1458, 0x0080 }, { 1459, 0x6aaa },
+ { 1467, 0x3230 }, { 1472, 0xb05e }, { 1480, 0x9d7a }, { 1490, 0x60ac },
+ /* 0x5600 */
+ { 1496, 0xd303 }, { 1503, 0xc900 }, { 1507, 0x3098 }, { 1512, 0x8a56 },
+ { 1519, 0x7000 }, { 1522, 0x1390 }, { 1527, 0x1f14 }, { 1534, 0x1842 },
+ { 1538, 0xc060 }, { 1542, 0x0008 }, { 1543, 0x8008 }, { 1545, 0x1080 },
+ { 1547, 0x0400 }, { 1548, 0xec90 }, { 1555, 0x2817 }, { 1561, 0xe633 },
+ /* 0x5700 */
+ { 1570, 0x0758 }, { 1576, 0x9000 }, { 1578, 0xf708 }, { 1586, 0x4e09 },
+ { 1592, 0xf485 }, { 1600, 0xfc83 }, { 1609, 0xaf53 }, { 1619, 0x18c8 },
+ { 1624, 0x187c }, { 1631, 0x080c }, { 1634, 0x6adf }, { 1645, 0x0114 },
+ { 1648, 0xc80c }, { 1653, 0xa734 }, { 1661, 0xa011 }, { 1665, 0x2710 },
+ /* 0x5800 */
+ { 1670, 0x28c5 }, { 1676, 0x4222 }, { 1680, 0x0413 }, { 1684, 0x0021 },
+ { 1686, 0x3010 }, { 1689, 0x4112 }, { 1693, 0x1820 }, { 1696, 0x4000 },
+ { 1697, 0x022b }, { 1702, 0xc60c }, { 1708, 0x0300 }, { 1710, 0x1000 },
+ { 1711, 0x0022 }, { 1713, 0x0022 }, { 1715, 0x5810 }, { 1719, 0x0249 },
+ /* 0x5900 */
+ { 1723, 0xa094 }, { 1728, 0x9670 }, { 1735, 0xeeb0 }, { 1744, 0x1792 },
+ { 1751, 0xcb96 }, { 1760, 0x05f2 }, { 1767, 0x0025 }, { 1770, 0x2358 },
+ { 1776, 0x25de }, { 1785, 0x42cc }, { 1791, 0xcf38 }, { 1800, 0x4a04 },
+ { 1804, 0x0c40 }, { 1807, 0x359f }, { 1817, 0x1128 }, { 1821, 0x8a00 },
+ /* 0x5a00 */
+ { 1824, 0x13fa }, { 1833, 0x910a }, { 1838, 0x0229 }, { 1842, 0x1056 },
+ { 1847, 0x0641 }, { 1851, 0x0420 }, { 1853, 0x0484 }, { 1856, 0x84f0 },
+ { 1862, 0x0000 }, { 1862, 0x0c04 }, { 1865, 0x0400 }, { 1866, 0x412c },
+ { 1871, 0x1206 }, { 1875, 0x1154 }, { 1880, 0x0a4b }, { 1886, 0x0002 },
+ /* 0x5b00 */
+ { 1887, 0x0200 }, { 1888, 0x00c0 }, { 1890, 0x0000 }, { 1890, 0x0094 },
+ { 1893, 0x0001 }, { 1894, 0xbfbb }, { 1907, 0x167c }, { 1915, 0x242b },
+ { 1921, 0x9bbb }, { 1932, 0x7fa8 }, { 1942, 0x0c7f }, { 1951, 0xe379 },
+ { 1961, 0x10f4 }, { 1967, 0xe00d }, { 1973, 0x4132 }, { 1978, 0x9f01 },
+ /* 0x5c00 */
+ { 1985, 0x8652 }, { 1991, 0x3572 }, { 1999, 0x10b4 }, { 2004, 0xff12 },
+ { 2014, 0xcf27 }, { 2024, 0x4223 }, { 2029, 0xc06b }, { 2036, 0x8602 },
+ { 2040, 0x3106 }, { 2045, 0x1fd3 }, { 2055, 0x3a0c }, { 2061, 0xa1aa },
+ { 2068, 0x0812 }, { 2071, 0x0204 }, { 2073, 0x2572 }, { 2080, 0x0801 },
+ /* 0x5d00 */
+ { 2082, 0x40cc }, { 2087, 0x4850 }, { 2091, 0x62d0 }, { 2097, 0x6010 },
+ { 2100, 0x1c80 }, { 2104, 0x2900 }, { 2107, 0x9a00 }, { 2111, 0x0010 },
+ { 2112, 0x0004 }, { 2113, 0x2200 }, { 2115, 0x0000 }, { 2115, 0x0080 },
+ { 2116, 0x2020 }, { 2118, 0x6800 }, { 2121, 0xcbe6 }, { 2131, 0x609e },
+ /* 0x5e00 */
+ { 2138, 0x916e }, { 2146, 0x3f73 }, { 2157, 0x60c0 }, { 2161, 0x3982 },
+ { 2167, 0x1034 }, { 2171, 0x4830 }, { 2175, 0x0006 }, { 2177, 0xbd5c },
+ { 2187, 0x8cd1 }, { 2194, 0xd6fb }, { 2206, 0x20e1 }, { 2211, 0x43e8 },
+ { 2218, 0x0600 }, { 2220, 0x084e }, { 2225, 0x0500 }, { 2227, 0xc4d0 },
+ /* 0x5f00 */
+ { 2233, 0x8d1f }, { 2242, 0x89aa }, { 2249, 0xa6e1 }, { 2257, 0x1602 },
+ { 2261, 0x0001 }, { 2262, 0x21ed }, { 2270, 0x3656 }, { 2278, 0x1a8b },
+ { 2285, 0x1fb7 }, { 2296, 0x13a5 }, { 2303, 0x6502 }, { 2308, 0x30a0 },
+ { 2312, 0xb278 }, { 2320, 0x23c7 }, { 2328, 0x6c93 }, { 2336, 0xe922 },
+ /* 0x6000 */
+ { 2343, 0xe47f }, { 2354, 0x3a74 }, { 2362, 0x8fe3 }, { 2372, 0x9820 },
+ { 2376, 0x280e }, { 2381, 0x2625 }, { 2387, 0xbf9c }, { 2398, 0xbf49 },
+ { 2408, 0x3218 }, { 2413, 0xac54 }, { 2420, 0xb949 }, { 2428, 0x1916 },
+ { 2434, 0x0c60 }, { 2438, 0xb522 }, { 2445, 0xfbc1 }, { 2455, 0x0659 },
+ /* 0x6100 */
+ { 2461, 0xe343 }, { 2469, 0x8420 }, { 2472, 0x08d9 }, { 2478, 0x8000 },
+ { 2479, 0x5500 }, { 2483, 0x2022 }, { 2486, 0x0184 }, { 2489, 0x00a1 },
+ { 2492, 0x4800 }, { 2494, 0x2010 }, { 2496, 0x1380 }, { 2500, 0x4080 },
+ { 2502, 0x0d04 }, { 2506, 0x0016 }, { 2509, 0x0040 }, { 2510, 0x8020 },
+ /* 0x6200 */
+ { 2512, 0xfd40 }, { 2520, 0x8de7 }, { 2530, 0x5436 }, { 2537, 0xe098 },
+ { 2543, 0x7b8b }, { 2553, 0x091e }, { 2559, 0xfec8 }, { 2569, 0xd249 },
+ { 2576, 0x0611 }, { 2580, 0x8dee }, { 2590, 0x1937 }, { 2598, 0xba22 },
+ { 2605, 0x77f4 }, { 2616, 0x9fdd }, { 2628, 0xf3ec }, { 2639, 0xf0da },
+ /* 0x6300 */
+ { 2648, 0x4386 }, { 2654, 0xec42 }, { 2661, 0x8d3f }, { 2671, 0x2604 },
+ { 2675, 0xfa6c }, { 2685, 0xc021 }, { 2689, 0x628e }, { 2696, 0x0cc2 },
+ { 2701, 0xd785 }, { 2710, 0x0145 }, { 2714, 0x77ad }, { 2725, 0x5599 },
+ { 2733, 0xe250 }, { 2739, 0x4045 }, { 2743, 0x260b }, { 2749, 0xa154 },
+ /* 0x6400 */
+ { 2755, 0x9827 }, { 2762, 0x5819 }, { 2768, 0x3443 }, { 2774, 0xa410 },
+ { 2778, 0x05f2 }, { 2785, 0x4114 }, { 2789, 0x2280 }, { 2792, 0x0700 },
+ { 2795, 0x00b4 }, { 2799, 0x4266 }, { 2805, 0x7210 }, { 2810, 0x15a1 },
+ { 2816, 0x6025 }, { 2821, 0x4185 }, { 2826, 0x0054 }, { 2829, 0x0000 },
+ /* 0x6500 */
+ { 2829, 0x0201 }, { 2831, 0x0104 }, { 2833, 0xc820 }, { 2837, 0xcb70 },
+ { 2845, 0x9320 }, { 2850, 0x6a62 }, { 2857, 0x184c }, { 2862, 0x0095 },
+ { 2866, 0x1880 }, { 2869, 0x9a8b }, { 2877, 0xaab2 }, { 2885, 0x3201 },
+ { 2889, 0xd87a }, { 2898, 0x00c4 }, { 2901, 0xf3e5 }, { 2912, 0x04c3 },
+ /* 0x6600 */
+ { 2917, 0xd44d }, { 2925, 0xa238 }, { 2931, 0xa1a1 }, { 2937, 0x5072 },
+ { 2943, 0x980a }, { 2948, 0x84fc }, { 2956, 0xc152 }, { 2962, 0x44d1 },
+ { 2968, 0x1094 }, { 2972, 0x20c2 }, { 2976, 0x4180 }, { 2979, 0x4210 },
+ { 2982, 0x0000 }, { 2982, 0x3a00 }, { 2986, 0x0240 }, { 2988, 0xd29d },
+ /* 0x6700 */
+ { 2997, 0x2f01 }, { 3003, 0xa8b1 }, { 3010, 0xbd40 }, { 3017, 0x2432 },
+ { 3022, 0xd34d }, { 3031, 0xd04b }, { 3038, 0xa723 }, { 3046, 0xd0ad },
+ { 3054, 0x0a92 }, { 3059, 0x75a1 }, { 3067, 0xadac }, { 3076, 0x01e9 },
+ { 3082, 0x801a }, { 3086, 0x771f }, { 3097, 0x9225 }, { 3103, 0xa01b },
+ /* 0x6800 */
+ { 3109, 0xdfa1 }, { 3119, 0x20ca }, { 3124, 0x0602 }, { 3127, 0x738c },
+ { 3135, 0x577f }, { 3147, 0x003b }, { 3152, 0x0bff }, { 3163, 0x00d0 },
+ { 3166, 0x806a }, { 3171, 0x0088 }, { 3173, 0xa1c4 }, { 3179, 0x0029 },
+ { 3182, 0x2a05 }, { 3187, 0x0524 }, { 3191, 0x4009 }, { 3194, 0x1623 },
+ /* 0x6900 */
+ { 3200, 0x6822 }, { 3205, 0x8005 }, { 3208, 0x2011 }, { 3211, 0xa211 },
+ { 3216, 0x0004 }, { 3217, 0x6490 }, { 3222, 0x4849 }, { 3227, 0x1382 },
+ { 3232, 0x23d5 }, { 3240, 0x1930 }, { 3245, 0x2980 }, { 3249, 0x0892 },
+ { 3253, 0x5402 }, { 3257, 0x8811 }, { 3261, 0x2001 }, { 3263, 0xa004 },
+ /* 0x6a00 */
+ { 3266, 0x0400 }, { 3267, 0x8180 }, { 3270, 0x8502 }, { 3274, 0x6022 },
+ { 3278, 0x0090 }, { 3280, 0x0b01 }, { 3284, 0x0022 }, { 3286, 0x1202 },
+ { 3289, 0x4011 }, { 3292, 0x0083 }, { 3295, 0x1a01 }, { 3299, 0x0000 },
+ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 },
+ /* 0x6b00 */
+ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x009f }, { 3305, 0x4684 },
+ { 3310, 0x12c8 }, { 3315, 0x0200 }, { 3316, 0x04fc }, { 3323, 0x1a00 },
+ { 3326, 0x2ede }, { 3336, 0x0c4c }, { 3341, 0x0402 }, { 3343, 0x80b8 },
+ { 3348, 0xa826 }, { 3354, 0x0afc }, { 3362, 0x8c02 }, { 3366, 0x2228 },
+ /* 0x6c00 */
+ { 3370, 0xa0e0 }, { 3375, 0x8f7b }, { 3386, 0xc7d6 }, { 3396, 0x2135 },
+ { 3402, 0x06c7 }, { 3409, 0xf8b1 }, { 3418, 0x0713 }, { 3424, 0x6255 },
+ { 3431, 0x936e }, { 3440, 0x8a19 }, { 3446, 0x6efa }, { 3457, 0xfb0e },
+ { 3467, 0x1630 }, { 3472, 0x48f9 }, { 3480, 0xcd2f }, { 3490, 0x7deb },
+ /* 0x6d00 */
+ { 3502, 0x5892 }, { 3508, 0x4e84 }, { 3514, 0x4ca0 }, { 3519, 0x7a2e },
+ { 3528, 0xedea }, { 3539, 0x561e }, { 3547, 0xc649 }, { 3554, 0x1190 },
+ { 3558, 0x5324 }, { 3564, 0xe83a }, { 3572, 0xcfdb }, { 3584, 0x8124 },
+ { 3588, 0x18f1 }, { 3595, 0x6342 }, { 3601, 0x5853 }, { 3608, 0x1a8a },
+ /* 0x6e00 */
+ { 3614, 0x7420 }, { 3619, 0x24d3 }, { 3626, 0xaa3b }, { 3635, 0x0514 },
+ { 3639, 0x6018 }, { 3643, 0x8958 }, { 3649, 0x4800 }, { 3651, 0xc000 },
+ { 3653, 0x8268 }, { 3658, 0x9101 }, { 3662, 0x84a4 }, { 3667, 0x2cd6 },
+ { 3675, 0x8886 }, { 3680, 0xc4ba }, { 3688, 0x0377 }, { 3696, 0x0210 },
+ /* 0x6f00 */
+ { 3698, 0x8244 }, { 3702, 0x0038 }, { 3705, 0xae11 }, { 3712, 0x404a },
+ { 3716, 0x28c0 }, { 3720, 0x5100 }, { 3723, 0x6044 }, { 3727, 0x1514 },
+ { 3732, 0x7310 }, { 3738, 0x1000 }, { 3739, 0x0082 }, { 3741, 0x0248 },
+ { 3744, 0x0205 }, { 3747, 0x4006 }, { 3750, 0xc003 }, { 3754, 0x0000 },
+ /* 0x7000 */
+ { 3754, 0x0000 }, { 3754, 0x0c02 }, { 3757, 0x0008 }, { 3758, 0x0220 },
+ { 3760, 0x9000 }, { 3762, 0x4000 }, { 3763, 0xb800 }, { 3767, 0xd161 },
+ { 3774, 0x4621 }, { 3779, 0x3274 }, { 3786, 0xf800 }, { 3791, 0x3b8a },
+ { 3799, 0x050f }, { 3805, 0x8b00 }, { 3809, 0xbbd0 }, { 3818, 0x2280 },
+ /* 0x7100 */
+ { 3821, 0x0600 }, { 3823, 0x0769 }, { 3830, 0x8040 }, { 3832, 0x0043 },
+ { 3835, 0x5420 }, { 3839, 0x5000 }, { 3841, 0x41d0 }, { 3846, 0x250c },
+ { 3851, 0x8410 }, { 3854, 0x8310 }, { 3858, 0x1101 }, { 3861, 0x0228 },
+ { 3864, 0x4008 }, { 3866, 0x0030 }, { 3868, 0x40a1 }, { 3872, 0x0200 },
+ /* 0x7200 */
+ { 3873, 0x0040 }, { 3874, 0x2000 }, { 3875, 0x1500 }, { 3878, 0xabe3 },
+ { 3888, 0x3180 }, { 3892, 0xaa44 }, { 3898, 0xc2c6 }, { 3905, 0xc624 },
+ { 3911, 0xac13 }, { 3918, 0x8004 }, { 3920, 0xb000 }, { 3923, 0x03d1 },
+ { 3929, 0x611e }, { 3936, 0x4285 }, { 3941, 0xf303 }, { 3949, 0x1d9f },
+ /* 0x7300 */
+ { 3959, 0x440a }, { 3963, 0x78e8 }, { 3971, 0x5e26 }, { 3979, 0xc392 },
+ { 3986, 0x2000 }, { 3987, 0x0085 }, { 3990, 0xb001 }, { 3994, 0x4000 },
+ { 3995, 0x4a90 }, { 4000, 0x8842 }, { 4004, 0xca04 }, { 4009, 0x0c8d },
+ { 4015, 0xa705 }, { 4022, 0x4203 }, { 4026, 0x22a1 }, { 4031, 0x0004 },
+ /* 0x7400 */
+ { 4032, 0x8668 }, { 4038, 0x0c01 }, { 4041, 0x5564 }, { 4048, 0x1079 },
+ { 4054, 0x0002 }, { 4055, 0xdea0 }, { 4063, 0x2000 }, { 4064, 0x40c1 },
+ { 4068, 0x488b }, { 4074, 0x5001 }, { 4077, 0x0380 }, { 4080, 0x0400 },
+ { 4081, 0x0000 }, { 4081, 0x5004 }, { 4084, 0xc05d }, { 4091, 0x80d0 },
+ /* 0x7500 */
+ { 4095, 0xa010 }, { 4098, 0x970a }, { 4105, 0xbb20 }, { 4112, 0x4daf },
+ { 4122, 0xd921 }, { 4129, 0x1e10 }, { 4134, 0x0460 }, { 4137, 0x8314 },
+ { 4142, 0x8848 }, { 4146, 0xa6d6 }, { 4155, 0xd83b }, { 4164, 0x733f },
+ { 4175, 0x27bc }, { 4184, 0x4974 }, { 4191, 0x0ddc }, { 4199, 0x9213 },
+ /* 0x7600 */
+ { 4205, 0x142b }, { 4211, 0x8ba1 }, { 4218, 0x2e75 }, { 4227, 0xd139 },
+ { 4235, 0x3009 }, { 4239, 0x5050 }, { 4243, 0x8808 }, { 4246, 0x6900 },
+ { 4250, 0x49d4 }, { 4257, 0x024a }, { 4261, 0x4010 }, { 4263, 0x8016 },
+ { 4267, 0xe564 }, { 4275, 0x89d7 }, { 4284, 0xc020 }, { 4287, 0x5316 },
+ /* 0x7700 */
+ { 4294, 0x2b92 }, { 4301, 0x8600 }, { 4304, 0xa345 }, { 4311, 0x15e0 },
+ { 4317, 0x008b }, { 4321, 0x0c03 }, { 4325, 0x196e }, { 4333, 0xe200 },
+ { 4337, 0x7031 }, { 4343, 0x8006 }, { 4346, 0x16a5 }, { 4353, 0xa829 },
+ { 4359, 0x2000 }, { 4360, 0x1880 }, { 4363, 0x7aac }, { 4372, 0xe148 },
+ /* 0x7800 */
+ { 4378, 0x3207 }, { 4384, 0xb5d6 }, { 4394, 0x32e8 }, { 4401, 0x5f91 },
+ { 4410, 0x50a1 }, { 4415, 0x20e5 }, { 4421, 0x7c00 }, { 4426, 0x1080 },
+ { 4428, 0x7280 }, { 4433, 0x9d8a }, { 4441, 0x00aa }, { 4445, 0x421f },
+ { 4452, 0x0e22 }, { 4457, 0x0231 }, { 4461, 0x1100 }, { 4463, 0x0494 },
+ /* 0x7900 */
+ { 4467, 0x0022 }, { 4469, 0x4008 }, { 4471, 0x0010 }, { 4472, 0x5c10 },
+ { 4477, 0x0343 }, { 4482, 0xfcc8 }, { 4491, 0xa1a5 }, { 4498, 0x0580 },
+ { 4501, 0x8433 }, { 4507, 0x0400 }, { 4508, 0x0080 }, { 4509, 0x6e08 },
+ { 4515, 0x2a4b }, { 4522, 0x8126 }, { 4527, 0xaad8 }, { 4535, 0x2901 },
+ /* 0x7a00 */
+ { 4539, 0x684d }, { 4546, 0x4490 }, { 4550, 0x0009 }, { 4552, 0xba88 },
+ { 4559, 0x0040 }, { 4560, 0x0082 }, { 4562, 0x0000 }, { 4562, 0x87d1 },
+ { 4570, 0x215b }, { 4577, 0xb1e6 }, { 4586, 0x3161 }, { 4592, 0x8008 },
+ { 4594, 0x0800 }, { 4595, 0xc240 }, { 4599, 0xa069 }, { 4605, 0xa600 },
+ /* 0x7b00 */
+ { 4609, 0x8d58 }, { 4616, 0x4a32 }, { 4622, 0x5d71 }, { 4631, 0x550a },
+ { 4637, 0x9aa0 }, { 4643, 0x2d57 }, { 4652, 0x4005 }, { 4655, 0x4aa6 },
+ { 4662, 0x2021 }, { 4665, 0x30b1 }, { 4671, 0x3fc6 }, { 4681, 0x0112 },
+ { 4684, 0x10c2 }, { 4688, 0x260a }, { 4693, 0x4462 }, { 4698, 0x5082 },
+ /* 0x7c00 */
+ { 4702, 0x9880 }, { 4706, 0x8040 }, { 4708, 0x04c0 }, { 4711, 0x8100 },
+ { 4713, 0x2003 }, { 4716, 0x0000 }, { 4716, 0x0000 }, { 4716, 0x3818 },
+ { 4721, 0x0200 }, { 4722, 0xf1a6 }, { 4731, 0x4434 }, { 4736, 0x720e },
+ { 4743, 0x35a2 }, { 4750, 0x92e0 }, { 4756, 0x8101 }, { 4759, 0x0900 },
+ /* 0x7d00 */
+ { 4761, 0x0400 }, { 4762, 0x0000 }, { 4762, 0x8885 }, { 4767, 0x0000 },
+ { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x4000 }, { 4768, 0x0080 },
+ { 4769, 0x0000 }, { 4769, 0x0000 }, { 4769, 0x4040 }, { 4771, 0x0000 },
+ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 },
+ /* 0x7e00 */
+ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0800 },
+ { 4772, 0x0082 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0000 },
+ { 4774, 0x0004 }, { 4775, 0x8800 }, { 4777, 0xbfff }, { 4792, 0xe7ef },
+ { 4805, 0xffff }, { 4821, 0xffbf }, { 4836, 0xefef }, { 4850, 0xfdff },
+ /* 0x7f00 */
+ { 4865, 0xfbff }, { 4880, 0xbffe }, { 4894, 0xffff }, { 4910, 0x057f },
+ { 4919, 0x0034 }, { 4922, 0x85b3 }, { 4930, 0x4706 }, { 4936, 0x4216 },
+ { 4941, 0x5402 }, { 4945, 0xe410 }, { 4950, 0x8092 }, { 4954, 0xb305 },
+ { 4961, 0x5422 }, { 4966, 0x8130 }, { 4970, 0x4263 }, { 4976, 0x180b },
+ /* 0x8000 */
+ { 4981, 0x387b }, { 4990, 0x13f5 }, { 4999, 0x07e5 }, { 5007, 0xa9ea },
+ { 5016, 0x3c4c }, { 5023, 0x0514 }, { 5027, 0x0600 }, { 5029, 0x8002 },
+ { 5031, 0x1ad9 }, { 5039, 0xbd48 }, { 5047, 0xee37 }, { 5058, 0xf496 },
+ { 5067, 0x705f }, { 5076, 0x7ec0 }, { 5084, 0xbfb2 }, { 5095, 0x355f },
+ /* 0x8100 */
+ { 5105, 0xe644 }, { 5112, 0x455f }, { 5121, 0x9000 }, { 5123, 0x4146 },
+ { 5128, 0x1d40 }, { 5133, 0x063b }, { 5140, 0x62a1 }, { 5146, 0xfe13 },
+ { 5156, 0x8505 }, { 5161, 0x3902 }, { 5166, 0x0548 }, { 5170, 0x0c08 },
+ { 5173, 0x144f }, { 5180, 0x0000 }, { 5180, 0x3488 }, { 5185, 0x5818 },
+ /* 0x8200 */
+ { 5190, 0x3077 }, { 5198, 0xd815 }, { 5205, 0xbd0e }, { 5214, 0x4bfb },
+ { 5225, 0x8a90 }, { 5230, 0x8500 }, { 5233, 0xc100 }, { 5236, 0xe61d },
+ { 5245, 0xed14 }, { 5253, 0xb386 }, { 5261, 0xff72 }, { 5273, 0x639b },
+ { 5282, 0xfd92 }, { 5292, 0xd9be }, { 5303, 0x887b }, { 5311, 0x0a92 },
+ /* 0x8300 */
+ { 5316, 0xd3fe }, { 5328, 0x1cb2 }, { 5335, 0xb980 }, { 5341, 0x177a },
+ { 5350, 0x82c9 }, { 5356, 0xdc17 }, { 5365, 0xfffb }, { 5380, 0x3980 },
+ { 5385, 0x4260 }, { 5389, 0x590c }, { 5395, 0x0f01 }, { 5400, 0x37df },
+ { 5412, 0x94a3 }, { 5419, 0xb150 }, { 5425, 0x0623 }, { 5430, 0x2307 },
+ /* 0x8400 */
+ { 5436, 0xf85a }, { 5445, 0x3102 }, { 5449, 0x01f0 }, { 5454, 0x3102 },
+ { 5458, 0x0040 }, { 5459, 0x1e82 }, { 5465, 0x3a0a }, { 5471, 0x056a },
+ { 5477, 0x5b84 }, { 5484, 0x1280 }, { 5487, 0x8002 }, { 5489, 0xa714 },
+ { 5496, 0x2612 }, { 5501, 0xa04b }, { 5507, 0x1069 }, { 5512, 0x9001 },
+ /* 0x8500 */
+ { 5515, 0x1000 }, { 5516, 0x848a }, { 5521, 0x1802 }, { 5524, 0x3f80 },
+ { 5531, 0x0708 }, { 5535, 0x4240 }, { 5538, 0x0110 }, { 5540, 0x4e14 },
+ { 5546, 0x80b0 }, { 5550, 0x1800 }, { 5552, 0xc510 }, { 5557, 0x0281 },
+ { 5560, 0x8202 }, { 5563, 0x1029 }, { 5567, 0x0210 }, { 5569, 0x8800 },
+ /* 0x8600 */
+ { 5571, 0x0020 }, { 5572, 0x0042 }, { 5574, 0x0280 }, { 5576, 0x1100 },
+ { 5578, 0xe000 }, { 5581, 0x4413 }, { 5586, 0x5804 }, { 5590, 0xfe02 },
+ { 5598, 0x3c07 }, { 5605, 0x3028 }, { 5609, 0x9798 }, { 5617, 0x0473 },
+ { 5623, 0xced1 }, { 5632, 0xcb13 }, { 5640, 0x6210 }, { 5644, 0x431f },
+ /* 0x8700 */
+ { 5652, 0x278d }, { 5660, 0x55ac }, { 5668, 0x422e }, { 5674, 0xc892 },
+ { 5680, 0x5380 }, { 5685, 0x0288 }, { 5688, 0x4039 }, { 5693, 0x7851 },
+ { 5700, 0x292c }, { 5706, 0x8088 }, { 5709, 0xb900 }, { 5714, 0x2428 },
+ { 5718, 0x0c41 }, { 5722, 0x080e }, { 5726, 0x4421 }, { 5730, 0x4200 },
+ /* 0x8800 */
+ { 5732, 0x0408 }, { 5734, 0x0868 }, { 5738, 0x0006 }, { 5740, 0x1204 },
+ { 5743, 0x3031 }, { 5748, 0x0290 }, { 5751, 0x5b3e }, { 5761, 0xe085 },
+ { 5767, 0x2936 }, { 5774, 0x1044 }, { 5777, 0x2814 }, { 5781, 0x1082 },
+ { 5784, 0x4266 }, { 5790, 0x8334 }, { 5796, 0x013c }, { 5801, 0x531b },
+ /* 0x8900 */
+ { 5809, 0x0404 }, { 5811, 0x0e0d }, { 5817, 0x0c22 }, { 5821, 0x0051 },
+ { 5824, 0x0012 }, { 5826, 0xc000 }, { 5828, 0x0040 }, { 5829, 0x8800 },
+ { 5831, 0x004a }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0x0000 },
+ { 5834, 0xdff6 }, { 5847, 0x5447 }, { 5854, 0x8868 }, { 5859, 0x0008 },
+ /* 0x8a00 */
+ { 5860, 0x0081 }, { 5862, 0x0000 }, { 5862, 0x0000 }, { 5862, 0x4000 },
+ { 5863, 0x0100 }, { 5864, 0x0000 }, { 5864, 0x0000 }, { 5864, 0x0200 },
+ { 5865, 0x0600 }, { 5867, 0x0008 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ /* 0x8b00 */
+ { 5868, 0x0080 }, { 5869, 0x0000 }, { 5869, 0x0040 }, { 5870, 0x0000 },
+ { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x1040 }, { 5872, 0x0000 },
+ { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0xefff }, { 5887, 0xf7fd },
+ { 5901, 0xff7f }, { 5916, 0xfffe }, { 5931, 0xfbff }, { 5946, 0xffff },
+ /* 0x8c00 */
+ { 5962, 0xfdff }, { 5977, 0xbfff }, { 5992, 0xffff }, { 6008, 0x00ff },
+ { 6016, 0x12c2 }, { 6021, 0x0420 }, { 6023, 0x0c06 }, { 6027, 0x0708 },
+ { 6031, 0x1624 }, { 6036, 0x0110 }, { 6038, 0x0000 }, { 6038, 0x0000 },
+ { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 },
+ /* 0x8d00 */
+ { 6038, 0x0000 }, { 6038, 0xe000 }, { 6041, 0xfffe }, { 6056, 0xffff },
+ { 6072, 0xffff }, { 6088, 0x7f79 }, { 6100, 0x28df }, { 6109, 0x00f9 },
+ { 6115, 0x0c32 }, { 6120, 0x8012 }, { 6123, 0x0008 }, { 6124, 0xd53a },
+ { 6133, 0xd858 }, { 6140, 0xecc2 }, { 6148, 0x9d18 }, { 6155, 0x2fa8 },
+ /* 0x8e00 */
+ { 6163, 0x9620 }, { 6168, 0xe010 }, { 6172, 0xd60c }, { 6179, 0x2622 },
+ { 6184, 0x0f97 }, { 6193, 0x0206 }, { 6196, 0xb240 }, { 6201, 0x9055 },
+ { 6207, 0x80a2 }, { 6211, 0x5011 }, { 6215, 0x9800 }, { 6218, 0x0404 },
+ { 6220, 0x4000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
+ /* 0x8f00 */
+ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
+ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0xfbc0 }, { 6230, 0xffff },
+ { 6246, 0xeffe }, { 6260, 0xdffb }, { 6274, 0x0b08 }, { 6278, 0x6243 },
+ { 6284, 0x41b6 }, { 6291, 0xfb3b }, { 6303, 0x6f74 }, { 6313, 0x2389 },
+ /* 0x9000 */
+ { 6319, 0xae7f }, { 6331, 0xecd7 }, { 6342, 0xe047 }, { 6349, 0x5960 },
+ { 6355, 0xa096 }, { 6361, 0x098f }, { 6368, 0x612c }, { 6374, 0xa030 },
+ { 6378, 0x090d }, { 6383, 0x2aaa }, { 6390, 0xd44e }, { 6398, 0x4f7b },
+ { 6409, 0xc4b2 }, { 6416, 0x388b }, { 6423, 0xa9c6 }, { 6431, 0x6110 },
+ /* 0x9100 */
+ { 6435, 0x0014 }, { 6437, 0x4200 }, { 6439, 0x800c }, { 6442, 0x0202 },
+ { 6444, 0xfe48 }, { 6453, 0x6485 }, { 6459, 0xd63e }, { 6469, 0xe3f7 },
+ { 6481, 0x3aa0 }, { 6487, 0x0c07 }, { 6492, 0xe40c }, { 6498, 0x0430 },
+ { 6501, 0xf680 }, { 6508, 0x1002 }, { 6510, 0x0000 }, { 6510, 0x0000 },
+ /* 0x9200 */
+ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 },
+ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0010 },
+ { 6511, 0x4000 }, { 6512, 0x0000 }, { 6512, 0x4000 }, { 6513, 0x0000 },
+ { 6513, 0x0100 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 },
+ /* 0x9300 */
+ { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x4000 },
+ { 6515, 0x0000 }, { 6515, 0x0000 }, { 6515, 0x0400 }, { 6516, 0x0000 },
+ { 6516, 0x8000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0000 },
+ { 6517, 0x0400 }, { 6518, 0x0040 }, { 6519, 0x0000 }, { 6519, 0x0000 },
+ /* 0x9400 */
+ { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x4000 },
+ { 6520, 0x0000 }, { 6520, 0x0000 }, { 6520, 0x0800 }, { 6521, 0x0000 },
+ { 6521, 0xffe0 }, { 6532, 0xfebd }, { 6545, 0xffff }, { 6561, 0xffff },
+ { 6577, 0x7f7f }, { 6591, 0xfbe7 }, { 6604, 0xffbf }, { 6619, 0xf7ff },
+ /* 0x9500 */
+ { 6634, 0xffff }, { 6650, 0xefff }, { 6665, 0xff7e }, { 6679, 0xdff7 },
+ { 6693, 0xf6f7 }, { 6706, 0xfbdf }, { 6720, 0xbffe }, { 6734, 0x804f },
+ { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 },
+ { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0xef00 }, { 6747, 0x7fff },
+ /* 0x9600 */
+ { 6762, 0xff7f }, { 6777, 0xb6f7 }, { 6789, 0x4406 }, { 6793, 0xb87e },
+ { 6803, 0x3bf5 }, { 6814, 0x8831 }, { 6819, 0x1796 }, { 6827, 0x00f4 },
+ { 6832, 0xa960 }, { 6838, 0x1391 }, { 6844, 0x0080 }, { 6845, 0x7249 },
+ { 6852, 0xf2f3 }, { 6863, 0x0024 }, { 6865, 0x8701 }, { 6870, 0x42c8 },
+ /* 0x9700 */
+ { 6875, 0xe3d3 }, { 6885, 0x5048 }, { 6889, 0x2400 }, { 6891, 0x4305 },
+ { 6896, 0x0000 }, { 6896, 0x4a4c }, { 6902, 0x0227 }, { 6907, 0x1058 },
+ { 6911, 0x2820 }, { 6914, 0x0116 }, { 6918, 0xa809 }, { 6923, 0x0014 },
+ { 6925, 0x0000 }, { 6925, 0x0000 }, { 6925, 0x3ec0 }, { 6932, 0x0068 },
+ /* 0x9800 */
+ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 },
+ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0xffe0 },
+ { 6946, 0xb7ff }, { 6960, 0xfddb }, { 6973, 0x00f7 }, { 6980, 0x0000 },
+ { 6980, 0x4000 }, { 6981, 0xc72e }, { 6990, 0x0180 }, { 6992, 0x0000 },
+ /* 0x9900 */
+ { 6992, 0x2000 }, { 6993, 0x0001 }, { 6994, 0x4000 }, { 6995, 0x0000 },
+ { 6995, 0x0000 }, { 6995, 0x0030 }, { 6997, 0xffa8 }, { 7008, 0xb4f7 },
+ { 7019, 0xadf3 }, { 7030, 0x03ff }, { 7040, 0x0120 }, { 7042, 0x0000 },
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
+ /* 0x9a00 */
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0xf000 }, { 7046, 0xfffb },
+ { 7061, 0x9df7 }, { 7073, 0xfdcf }, { 7086, 0x01bf }, { 7094, 0x15c3 },
+ { 7101, 0x1827 }, { 7107, 0x810a }, { 7111, 0xa842 }, { 7116, 0x0a00 },
+ /* 0x9b00 */
+ { 7118, 0x8108 }, { 7121, 0x8008 }, { 7123, 0x8008 }, { 7125, 0x1804 },
+ { 7128, 0xa3be }, { 7138, 0x0012 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ /* 0x9c00 */
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x9000 },
+ { 7142, 0x69e6 }, { 7151, 0xdc37 }, { 7161, 0x6bff }, { 7174, 0x3dff },
+ { 7187, 0xfcf8 }, { 7198, 0xf3f9 }, { 7210, 0x0004 },
+};
+static const Summary16 gb2312_uni2indx_page9e[27] = {
+ /* 0x9e00 */
+ { 7211, 0x0000 }, { 7211, 0x8000 }, { 7212, 0xbf6f }, { 7225, 0xe7ee },
+ { 7237, 0xdffe }, { 7251, 0x5da2 }, { 7259, 0x3fd8 }, { 7269, 0xc00b },
+ { 7274, 0x0984 }, { 7278, 0xa00c }, { 7282, 0x0040 }, { 7283, 0x6910 },
+ { 7288, 0xe210 }, { 7293, 0xb912 }, { 7300, 0x86a5 }, { 7307, 0x5a00 },
+ /* 0x9f00 */
+ { 7311, 0x6800 }, { 7314, 0x0289 }, { 7318, 0x9005 }, { 7322, 0x6a80 },
+ { 7327, 0x0010 }, { 7328, 0x0003 }, { 7330, 0x0000 }, { 7330, 0x8000 },
+ { 7331, 0x1ff9 }, { 7342, 0x8e00 }, { 7346, 0x0001 },
+};
+static const Summary16 gb2312_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 7347, 0xfffe }, { 7362, 0xffff }, { 7378, 0xffff }, { 7394, 0xffff },
+ { 7410, 0xffff }, { 7426, 0x7fff }, { 7441, 0x0000 }, { 7441, 0x0000 },
+ { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 },
+ { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b },
+};
+
+static int
+gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0460)
+ summary = &gb2312_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2000 && wc < 0x2650)
+ summary = &gb2312_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x3000 && wc < 0x3230)
+ summary = &gb2312_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9cf0)
+ summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0x9e00 && wc < 0x9fb0)
+ summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = gb2312_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/src/xlibi18n/lcUniConv/georgian_academy.h b/src/xlibi18n/lcUniConv/georgian_academy.h
new file mode 100644
index 00000000..a847c52e
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/georgian_academy.h
@@ -0,0 +1,88 @@
+/* $XFree86: xc/lib/X11/lcUniConv/georgian_academy.h,v 1.3 2000/11/29 17:40:29 dawes Exp $ */
+
+/*
+ * GEORGIAN-ACADEMY
+ */
+
+static const unsigned short georgian_academy_2uni[32] = {
+ /* 0x80 */
+ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ /* 0x90 */
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+};
+
+static int
+georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0x80 && c < 0xa0)
+ *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
+ else if (c >= 0xc0 && c < 0xe7)
+ *pwc = (ucs4_t) c + 0x1010;
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char georgian_academy_page00[32] = {
+ 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
+ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
+};
+static const unsigned char georgian_academy_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char georgian_academy_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char georgian_academy_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0080 && wc < 0x00a0)
+ c = georgian_academy_page00[wc-0x0080];
+ else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = georgian_academy_page01[wc-0x0150];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = georgian_academy_page02[wc-0x02c0];
+ else if (wc >= 0x10d0 && wc < 0x10f7)
+ c = wc-0x1010;
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = georgian_academy_page20[wc-0x2010];
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/georgian_ps.h b/src/xlibi18n/lcUniConv/georgian_ps.h
new file mode 100644
index 00000000..e7220d0a
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/georgian_ps.h
@@ -0,0 +1,105 @@
+/* $XFree86: xc/lib/X11/lcUniConv/georgian_ps.h,v 1.3 2000/11/29 17:40:29 dawes Exp $ */
+
+/*
+ * GEORGIAN-PS
+ */
+
+static const unsigned short georgian_ps_2uni_1[32] = {
+ /* 0x80 */
+ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ /* 0x90 */
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+};
+static const unsigned short georgian_ps_2uni_2[39] = {
+ /* 0xc0 */
+ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1,
+ 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd,
+ /* 0xd0 */
+ 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4,
+ 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec,
+ /* 0xe0 */
+ 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5,
+};
+
+static int
+georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0x80 && c < 0xa0)
+ *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
+ else if (c >= 0xc0 && c < 0xe6)
+ *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char georgian_ps_page00[32] = {
+ 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
+ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
+};
+static const unsigned char georgian_ps_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char georgian_ps_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char georgian_ps_page10[40] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */
+ 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */
+ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */
+ 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+static const unsigned char georgian_ps_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0080 && wc < 0x00a0)
+ c = georgian_ps_page00[wc-0x0080];
+ else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100))
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = georgian_ps_page01[wc-0x0150];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = georgian_ps_page02[wc-0x02c0];
+ else if (wc >= 0x10d0 && wc < 0x10f8)
+ c = georgian_ps_page10[wc-0x10d0];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = georgian_ps_page20[wc-0x2010];
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_1.h b/src/xlibi18n/lcUniConv/iso8859_1.h
new file mode 100644
index 00000000..a600899f
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_1.h
@@ -0,0 +1,23 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_1.h,v 1.3 2000/11/29 17:40:30 dawes Exp $ */
+
+/*
+ * ISO-8859-1
+ */
+
+static int
+iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static int
+iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0100) {
+ *r = wc;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_10.h b/src/xlibi18n/lcUniConv/iso8859_10.h
new file mode 100644
index 00000000..b63de3eb
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_10.h
@@ -0,0 +1,88 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_10.h,v 1.3 2000/11/29 17:40:30 dawes Exp $ */
+
+/*
+ * ISO-8859-10
+ */
+
+static const unsigned short iso8859_10_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+ 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+ 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+ /* 0xc0 */
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ /* 0xe0 */
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
+};
+
+static int
+iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_10_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
+ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */
+ 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */
+ 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */
+};
+
+static int
+iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_10_page00[wc-0x00a0];
+ else if (wc == 0x2015)
+ c = 0xbd;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_11.h b/src/xlibi18n/lcUniConv/iso8859_11.h
new file mode 100644
index 00000000..ced0b3f2
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_11.h
@@ -0,0 +1,78 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_11.h,v 1.2 2002/10/09 16:38:19 tsi Exp $ */
+
+/*
+ * ISO8859-11
+ */
+
+static const unsigned short iso8859_11_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ /* 0xb0 */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ /* 0xc0 */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ /* 0xd0 */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
+ /* 0xe0 */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ /* 0xf0 */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+iso8859_11_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xa0) {
+ }
+ else {
+ unsigned short wc = iso8859_11_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_11_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+iso8859_11_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 || wc == 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0e00 && wc < 0x0e60)
+ c = iso8859_11_page0e[wc-0x0e00];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_13.h b/src/xlibi18n/lcUniConv/iso8859_13.h
new file mode 100644
index 00000000..fe1d767b
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_13.h
@@ -0,0 +1,91 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_13.h,v 1.2 2000/11/28 16:10:26 dawes Exp $ */
+
+/*
+ * ISO-8859-13
+ */
+
+static const unsigned short iso8859_13_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+ 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+ 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+ /* 0xc0 */
+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+ /* 0xd0 */
+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+ 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+ /* 0xe0 */
+ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+ /* 0xf0 */
+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+ 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
+};
+
+static int
+iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_13_page00[224] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */
+ 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */
+ 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_13_page20[8] = {
+ 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_13_page00[wc-0x00a0];
+ else if (wc >= 0x2018 && wc < 0x2020)
+ c = iso8859_13_page20[wc-0x2018];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_14.h b/src/xlibi18n/lcUniConv/iso8859_14.h
new file mode 100644
index 00000000..c76c2c2a
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_14.h
@@ -0,0 +1,109 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_14.h,v 1.3 2000/11/29 17:40:30 dawes Exp $ */
+
+/*
+ * ISO-8859-14
+ */
+
+static const unsigned short iso8859_14_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+ 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+ /* 0xb0 */
+ 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
+};
+
+static int
+iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_14_page00[96] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_14_page01_0[32] = {
+ 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char iso8859_14_page01_1[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */
+ 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_14_page1e_0[136] = {
+ 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */
+};
+static const unsigned char iso8859_14_page1e_1[8] = {
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+
+static int
+iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_14_page00[wc-0x00a0];
+ else if (wc >= 0x0108 && wc < 0x0128)
+ c = iso8859_14_page01_0[wc-0x0108];
+ else if (wc >= 0x0170 && wc < 0x0180)
+ c = iso8859_14_page01_1[wc-0x0170];
+ else if (wc >= 0x1e00 && wc < 0x1e88)
+ c = iso8859_14_page1e_0[wc-0x1e00];
+ else if (wc >= 0x1ef0 && wc < 0x1ef8)
+ c = iso8859_14_page1e_1[wc-0x1ef0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_15.h b/src/xlibi18n/lcUniConv/iso8859_15.h
new file mode 100644
index 00000000..8c613d7f
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_15.h
@@ -0,0 +1,63 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_15.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
+
+/*
+ * ISO-8859-15
+ */
+
+static const unsigned short iso8859_15_2uni[32] = {
+ /* 0xa0 */
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+ 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+};
+
+static int
+iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0 && c < 0xc0)
+ *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_15_page00[32] = {
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */
+};
+static const unsigned char iso8859_15_page01[48] = {
+ 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
+};
+
+static int
+iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = iso8859_15_page00[wc-0x00a0];
+ else if (wc >= 0x00c0 && wc < 0x0100)
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0180)
+ c = iso8859_15_page01[wc-0x0150];
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_16.h b/src/xlibi18n/lcUniConv/iso8859_16.h
new file mode 100644
index 00000000..3efe2ffe
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_16.h
@@ -0,0 +1,98 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_16.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
+
+/*
+ * ISO-8859-16
+ */
+
+static const unsigned short iso8859_16_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x00ab, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x0218, 0x201e, 0x0179, 0x00ad, 0x017a, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+ 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+ 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+ 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
+};
+
+static int
+iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_16_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xa5, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_16_page02[8] = {
+ 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+static const unsigned char iso8859_16_page20[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xab, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_16_page00[wc-0x00a0];
+ else if (wc >= 0x0218 && wc < 0x0220)
+ c = iso8859_16_page02[wc-0x0218];
+ else if (wc >= 0x2018 && wc < 0x2020)
+ c = iso8859_16_page20[wc-0x2018];
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_2.h b/src/xlibi18n/lcUniConv/iso8859_2.h
new file mode 100644
index 00000000..9598d54b
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_2.h
@@ -0,0 +1,94 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_2.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
+
+/*
+ * ISO-8859-2
+ */
+
+static const unsigned short iso8859_2_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+ 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+ 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+ /* 0xc0 */
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+ /* 0xd0 */
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+ /* 0xe0 */
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+ /* 0xf0 */
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
+};
+
+static int
+iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_2_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */
+ 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */
+ 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */
+ 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */
+ 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_2_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_2_page00[wc-0x00a0];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = iso8859_2_page02[wc-0x02c0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_3.h b/src/xlibi18n/lcUniConv/iso8859_3.h
new file mode 100644
index 00000000..1604c254
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_3.h
@@ -0,0 +1,100 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_3.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
+
+/*
+ * ISO-8859-3
+ */
+
+static const unsigned short iso8859_3_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7,
+ 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+ 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+ 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+ 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
+};
+
+static int
+iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_3_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_3_page00[96] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_3_page01[120] = {
+ 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */
+ 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_3_page02[8] = {
+ 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_3_page00[wc-0x00a0];
+ else if (wc >= 0x0108 && wc < 0x0180)
+ c = iso8859_3_page01[wc-0x0108];
+ else if (wc >= 0x02d8 && wc < 0x02e0)
+ c = iso8859_3_page02[wc-0x02d8];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_4.h b/src/xlibi18n/lcUniConv/iso8859_4.h
new file mode 100644
index 00000000..6ea62d1c
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_4.h
@@ -0,0 +1,94 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_4.h,v 1.3 2000/11/29 17:40:31 dawes Exp $ */
+
+/*
+ * ISO-8859-4
+ */
+
+static const unsigned short iso8859_4_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+ 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+ 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+ /* 0xc0 */
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+ /* 0xd0 */
+ 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+ /* 0xe0 */
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+ /* 0xf0 */
+ 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
+};
+
+static int
+iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_4_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
+ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */
+ 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */
+ 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_4_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_4_page00[wc-0x00a0];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = iso8859_4_page02[wc-0x02c0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_5.h b/src/xlibi18n/lcUniConv/iso8859_5.h
new file mode 100644
index 00000000..d4785677
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_5.h
@@ -0,0 +1,77 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_5.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
+
+/*
+ * ISO-8859-5
+ */
+
+static const unsigned short iso8859_5_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+ /* 0xb0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xc0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xd0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xe0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ /* 0xf0 */
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
+};
+
+static int
+iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_5_page00[16] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char iso8859_5_page04[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */
+};
+
+static int
+iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = iso8859_5_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0460)
+ c = iso8859_5_page04[wc-0x0400];
+ else if (wc == 0x2116)
+ c = 0xf0;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_6.h b/src/xlibi18n/lcUniConv/iso8859_6.h
new file mode 100644
index 00000000..4d57893a
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_6.h
@@ -0,0 +1,80 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_6.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
+
+/*
+ * ISO-8859-6
+ */
+
+static const unsigned short iso8859_6_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f,
+ /* 0xc0 */
+ 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ /* 0xd0 */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ /* 0xf0 */
+ 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_6_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_6_page00[16] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char iso8859_6_page06[80] = {
+ 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+
+static int
+iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = iso8859_6_page00[wc-0x00a0];
+ else if (wc >= 0x0608 && wc < 0x0658)
+ c = iso8859_6_page06[wc-0x0608];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_7.h b/src/xlibi18n/lcUniConv/iso8859_7.h
new file mode 100644
index 00000000..790cec75
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_7.h
@@ -0,0 +1,88 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_7.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
+
+/*
+ * ISO-8859-7
+ */
+
+static const unsigned short iso8859_7_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+ /* 0xc0 */
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ /* 0xd0 */
+ 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ /* 0xe0 */
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ /* 0xf0 */
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd,
+};
+
+static int
+iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_7_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_7_page00[32] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char iso8859_7_page03[80] = {
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */
+ 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */
+ 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */
+};
+static const unsigned char iso8859_7_page20[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */
+ 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = iso8859_7_page00[wc-0x00a0];
+ else if (wc >= 0x0380 && wc < 0x03d0)
+ c = iso8859_7_page03[wc-0x0380];
+ else if (wc >= 0x2010 && wc < 0x2020)
+ c = iso8859_7_page20[wc-0x2010];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_8.h b/src/xlibi18n/lcUniConv/iso8859_8.h
new file mode 100644
index 00000000..7b780f02
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_8.h
@@ -0,0 +1,89 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_8.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
+
+/*
+ * ISO-8859-8
+ */
+
+static const unsigned short iso8859_8_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd,
+ /* 0xc0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017,
+ /* 0xe0 */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ /* 0xf0 */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
+};
+
+static int
+iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0) {
+ unsigned short wc = iso8859_8_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_8_page00[88] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
+};
+static const unsigned char iso8859_8_page05[32] = {
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
+ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char iso8859_8_page20[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */
+};
+
+static int
+iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = iso8859_8_page00[wc-0x00a0];
+ else if (wc >= 0x05d0 && wc < 0x05f0)
+ c = iso8859_8_page05[wc-0x05d0];
+ else if (wc >= 0x2008 && wc < 0x2018)
+ c = iso8859_8_page20[wc-0x2008];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_9.h b/src/xlibi18n/lcUniConv/iso8859_9.h
new file mode 100644
index 00000000..55ec1cb1
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_9.h
@@ -0,0 +1,67 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_9.h,v 1.3 2000/11/29 17:40:32 dawes Exp $ */
+
+/*
+ * ISO-8859-9
+ */
+
+static const unsigned short iso8859_9_2uni[48] = {
+ /* 0xd0 */
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static int
+iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xd0)
+ *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_9_page00[48] = {
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_9_page01[72] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
+};
+
+static int
+iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00d0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00d0 && wc < 0x0100)
+ c = iso8859_9_page00[wc-0x00d0];
+ else if (wc >= 0x0118 && wc < 0x0160)
+ c = iso8859_9_page01[wc-0x0118];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/iso8859_9e.h b/src/xlibi18n/lcUniConv/iso8859_9e.h
new file mode 100644
index 00000000..a5a0b609
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/iso8859_9e.h
@@ -0,0 +1,103 @@
+/* $XFree86: xc/lib/X11/lcUniConv/iso8859_9e.h,v 1.3 2000/11/28 16:10:28 dawes Exp $ */
+
+/*
+ * ISO-8859-9E
+ */
+
+static const unsigned short iso8859_9e_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
+ 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
+ /* 0xb0 */
+ 0x00b0, 0x017e, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x012d, 0x00b7,
+ 0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x00bd, 0x0178, 0x01d2,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x018f, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00dd,
+ 0x019f, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x0259, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00fd,
+ 0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static int
+iso8859_9e_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_9e_page00[96] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_9e_page01[136] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, /* 0x28-0x2f */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xb1, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
+};
+static const unsigned char iso8859_9e_page01_d[24] = {
+ 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0xe0-0xe7 */
+};
+
+static int
+iso8859_9e_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_9e_page00[wc-0x00a0];
+ else if (wc >= 0x0118 && wc < 0x01a0)
+ c = iso8859_9e_page01[wc-0x0118];
+ else if (wc >= 0x01d0 && wc < 0x01e8)
+ c = iso8859_9e_page01_d[wc-0x01d0];
+ else if (wc == 0x0259)
+ c = 0xe6;
+ else if (wc == 0x0275)
+ c = 0xf8;
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/jisx0201.h b/src/xlibi18n/lcUniConv/jisx0201.h
new file mode 100644
index 00000000..4a30f284
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/jisx0201.h
@@ -0,0 +1,48 @@
+/* $XFree86: xc/lib/X11/lcUniConv/jisx0201.h,v 1.3 2000/11/29 17:40:33 dawes Exp $ */
+
+/*
+ * JISX0201.1976-0
+ */
+
+static int
+jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ if (c == 0x5c)
+ *pwc = (ucs4_t) 0x00a5;
+ else if (c == 0x7e)
+ *pwc = (ucs4_t) 0x203e;
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+ } else {
+ if (c >= 0xa1 && c < 0xe0) {
+ *pwc = (ucs4_t) c + 0xfec0;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
+ *r = wc;
+ return 1;
+ }
+ if (wc == 0x00a5) {
+ *r = 0x5c;
+ return 1;
+ }
+ if (wc == 0x203e) {
+ *r = 0x7e;
+ return 1;
+ }
+ if (wc >= 0xff61 && wc < 0xffa0) {
+ *r = wc - 0xfec0;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/jisx0208.h b/src/xlibi18n/lcUniConv/jisx0208.h
new file mode 100644
index 00000000..ea075471
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/jisx0208.h
@@ -0,0 +1,2397 @@
+/* $XFree86: xc/lib/X11/lcUniConv/jisx0208.h,v 1.5 2001/11/21 21:20:56 dawes Exp $ */
+
+/*
+ * JISX0208.1990-0
+ */
+
+static const unsigned short jisx0208_2uni_page21[690] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
+ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
+ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
+ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
+ 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
+ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
+ 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7,
+ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
+ 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
+ /* 0x22 */
+ 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b,
+ 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a,
+ 0x2229, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200, 0x2203,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207,
+ 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235,
+ 0x222b, 0x222c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021,
+ 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25ef,
+ /* 0x23 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 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, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 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, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x24 */
+ 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, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x25 */
+ 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, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
+ 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
+ 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
+ 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
+};
+static const unsigned short jisx0208_2uni_page30[6398] = {
+ /* 0x30 */
+ 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6,
+ 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed,
+ 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b,
+ 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f,
+ 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d,
+ 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937,
+ 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905,
+ 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e,
+ 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df,
+ 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32,
+ 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0,
+ 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
+ /* 0x31 */
+ 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
+ 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
+ 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
+ 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
+ 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
+ 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
+ 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
+ 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712,
+ 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf,
+ 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276,
+ 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a,
+ 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
+ /* 0x32 */
+ 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956,
+ 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b,
+ 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069,
+ 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d,
+ 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6,
+ 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b,
+ 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304,
+ 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6,
+ 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b,
+ 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb,
+ 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a,
+ 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
+ /* 0x33 */
+ 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75,
+ 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916,
+ 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb,
+ 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3,
+ 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1,
+ 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a,
+ 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66,
+ 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x6a7f,
+ 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec, 0x6d3b,
+ 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39, 0x53f6,
+ 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2, 0x91dc,
+ 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
+ /* 0x34 */
+ 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2,
+ 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c,
+ 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be,
+ 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57,
+ 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff,
+ 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e,
+ 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2,
+ 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc,
+ 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811,
+ 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa,
+ 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee,
+ 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
+ /* 0x35 */
+ 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
+ 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
+ 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
+ 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
+ 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
+ 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
+ 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
+ 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d,
+ 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08,
+ 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8,
+ 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8,
+ 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
+ /* 0x36 */
+ 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354,
+ 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a,
+ 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2,
+ 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1,
+ 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d,
+ 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4,
+ 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981,
+ 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39,
+ 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a,
+ 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2,
+ 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047,
+ 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
+ /* 0x37 */
+ 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688,
+ 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab,
+ 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2,
+ 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951,
+ 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a,
+ 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c,
+ 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63,
+ 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x5287,
+ 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20, 0x6c7a,
+ 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6, 0x5039,
+ 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f, 0x5805,
+ 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
+ /* 0x38 */
+ 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79,
+ 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375,
+ 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b,
+ 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00,
+ 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1,
+ 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56,
+ 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87,
+ 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d,
+ 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7,
+ 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e,
+ 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c,
+ 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
+ /* 0x39 */
+ 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
+ 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
+ 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
+ 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
+ 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
+ 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
+ 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
+ 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805,
+ 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5,
+ 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a,
+ 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170,
+ 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
+ /* 0x3a */
+ 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068,
+ 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a,
+ 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6,
+ 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df,
+ 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9,
+ 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73,
+ 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e,
+ 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750,
+ 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4,
+ 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b,
+ 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f,
+ 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
+ /* 0x3b */
+ 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1,
+ 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09,
+ 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6,
+ 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178,
+ 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f,
+ 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9,
+ 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307,
+ 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x6b7b,
+ 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b, 0x80a2,
+ 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c, 0x8aee,
+ 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d,
+ 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
+ /* 0x3c */
+ 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a,
+ 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f,
+ 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1,
+ 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be,
+ 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61,
+ 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c,
+ 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7,
+ 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c,
+ 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6,
+ 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b,
+ 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388,
+ 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
+ /* 0x3d */
+ 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
+ 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
+ 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
+ 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
+ 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
+ 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
+ 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
+ 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96,
+ 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6,
+ 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72,
+ 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f,
+ 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
+ /* 0x3e */
+ 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617,
+ 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a,
+ 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c,
+ 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f,
+ 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167,
+ 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11,
+ 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3,
+ 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266,
+ 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57,
+ 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5,
+ 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8,
+ 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
+ /* 0x3f */
+ 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6,
+ 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507,
+ 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b,
+ 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e,
+ 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab,
+ 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875,
+ 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663,
+ 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x9017,
+ 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761, 0x7c8b,
+ 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f, 0x745e,
+ 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db, 0x636e,
+ 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
+ /* 0x40 */
+ 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4,
+ 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574,
+ 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f,
+ 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93,
+ 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106,
+ 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3,
+ 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f,
+ 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83,
+ 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148,
+ 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247,
+ 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c,
+ 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
+ /* 0x41 */
+ 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
+ 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
+ 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
+ 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
+ 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
+ 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
+ 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
+ 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd,
+ 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89,
+ 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349,
+ 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d,
+ 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
+ /* 0x42 */
+ 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373,
+ 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e,
+ 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58,
+ 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a,
+ 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1,
+ 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe,
+ 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff,
+ 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000,
+ 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c,
+ 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85,
+ 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438,
+ 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
+ /* 0x43 */
+ 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea,
+ 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39,
+ 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1,
+ 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6,
+ 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696,
+ 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b,
+ 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718,
+ 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x9010,
+ 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2, 0x5b99,
+ 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877, 0x8a3b,
+ 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7, 0x8457,
+ 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
+ /* 0x44 */
+ 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2,
+ 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074,
+ 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a,
+ 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88,
+ 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc,
+ 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb,
+ 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f,
+ 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3,
+ 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448,
+ 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c,
+ 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b,
+ 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
+ /* 0x45 */
+ 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
+ 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
+ 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
+ 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
+ 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
+ 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
+ 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
+ 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd,
+ 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b,
+ 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7,
+ 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977,
+ 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
+ /* 0x46 */
+ 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003,
+ 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5,
+ 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5,
+ 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97,
+ 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec,
+ 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6,
+ 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566,
+ 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948,
+ 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a,
+ 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf,
+ 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1,
+ 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
+ /* 0x47 */
+ 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1,
+ 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5,
+ 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc,
+ 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2,
+ 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2,
+ 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3,
+ 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc,
+ 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x6973,
+ 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019, 0x877f,
+ 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd, 0x67cf,
+ 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb, 0x66dd,
+ 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
+ /* 0x48 */
+ 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61,
+ 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197,
+ 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a,
+ 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db,
+ 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af,
+ 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6,
+ 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0,
+ 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c,
+ 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2,
+ 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9,
+ 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e,
+ 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
+ /* 0x49 */
+ 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
+ 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
+ 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
+ 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
+ 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
+ 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
+ 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
+ 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7,
+ 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c,
+ 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66,
+ 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a,
+ 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
+ /* 0x4a */
+ 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8,
+ 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4,
+ 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587,
+ 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a,
+ 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb,
+ 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f,
+ 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf,
+ 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703,
+ 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893,
+ 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8,
+ 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29,
+ 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
+ /* 0x4b */
+ 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c,
+ 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd,
+ 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8,
+ 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2,
+ 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e,
+ 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2,
+ 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86,
+ 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x6469,
+ 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a, 0x6bce,
+ 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe, 0x9c52,
+ 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab, 0x8fc4,
+ 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
+ /* 0x4c */
+ 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac,
+ 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d,
+ 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727,
+ 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e,
+ 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d,
+ 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302,
+ 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499,
+ 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24,
+ 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301,
+ 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2,
+ 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3,
+ 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
+ /* 0x4d */
+ 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
+ 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
+ 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
+ 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
+ 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
+ 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
+ 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
+ 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83,
+ 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765,
+ 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71,
+ 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229,
+ 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
+ /* 0x4e */
+ 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387,
+ 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409,
+ 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e,
+ 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee,
+ 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7,
+ 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1,
+ 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a,
+ 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e,
+ 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2,
+ 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62,
+ 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b,
+ 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
+ /* 0x4f */
+ 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2,
+ 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c,
+ 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e,
+ 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6,
+ 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0,
+ 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900,
+ 0x6e7e, 0x7897, 0x8155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x50 */
+ 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f,
+ 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212,
+ 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3,
+ 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede,
+ 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d,
+ 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69,
+ 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf,
+ 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5,
+ 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6,
+ 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043,
+ 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c,
+ 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
+ /* 0x51 */
+ 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
+ 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
+ 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
+ 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
+ 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
+ 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
+ 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
+ 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0,
+ 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a,
+ 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e,
+ 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d,
+ 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
+ /* 0x52 */
+ 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7,
+ 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8,
+ 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315,
+ 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
+ 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e,
+ 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5,
+ 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc,
+ 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440,
+ 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e,
+ 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492,
+ 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2,
+ 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
+ /* 0x53 */
+ 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6,
+ 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539,
+ 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557,
+ 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f,
+ 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9,
+ 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4,
+ 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9,
+ 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x566b,
+ 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a, 0x56a0,
+ 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2, 0x56bc,
+ 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3, 0x56d7,
+ 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
+ /* 0x54 */
+ 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c,
+ 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769,
+ 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3,
+ 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3,
+ 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821,
+ 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885,
+ 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae,
+ 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc,
+ 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd,
+ 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d,
+ 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a,
+ 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
+ /* 0x55 */
+ 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
+ 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
+ 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
+ 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
+ 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
+ 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
+ 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
+ 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83,
+ 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4,
+ 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3,
+ 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28,
+ 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
+ /* 0x56 */
+ 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79,
+ 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc,
+ 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa,
+ 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f,
+ 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c,
+ 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84,
+ 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7,
+ 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb,
+ 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36,
+ 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f,
+ 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f,
+ 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
+ /* 0x57 */
+ 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8,
+ 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe,
+ 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29,
+ 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51,
+ 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83,
+ 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99,
+ 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4,
+ 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x6019,
+ 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b, 0x6026,
+ 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f, 0x604a,
+ 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c, 0x606b,
+ 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
+ /* 0x58 */
+ 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1,
+ 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5,
+ 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4,
+ 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147,
+ 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134,
+ 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a,
+ 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153,
+ 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a,
+ 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8,
+ 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3,
+ 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200,
+ 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
+ /* 0x59 */
+ 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
+ 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
+ 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
+ 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
+ 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
+ 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
+ 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
+ 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369,
+ 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6,
+ 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d,
+ 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a,
+ 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
+ /* 0x5a */
+ 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1,
+ 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c,
+ 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c,
+ 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536,
+ 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e,
+ 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f,
+ 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2,
+ 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603,
+ 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644,
+ 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f,
+ 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698,
+ 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
+ /* 0x5b */
+ 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9,
+ 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727,
+ 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
+ 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9,
+ 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7,
+ 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de,
+ 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c,
+ 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x68b3,
+ 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f, 0x68ad,
+ 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874, 0x68b5,
+ 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca, 0x6908,
+ 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
+ /* 0x5c */
+ 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3,
+ 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923,
+ 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954,
+ 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961,
+ 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf,
+ 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb,
+ 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4,
+ 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2,
+ 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a,
+ 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36,
+ 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22,
+ 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
+ /* 0x5d */
+ 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
+ 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
+ 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
+ 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
+ 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
+ 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
+ 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
+ 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe,
+ 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55,
+ 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e,
+ 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd,
+ 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
+ /* 0x5e */
+ 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36,
+ 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c,
+ 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95,
+ 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6,
+ 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5,
+ 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e,
+ 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b,
+ 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff,
+ 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3,
+ 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5,
+ 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe,
+ 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
+ /* 0x5f */
+ 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80,
+ 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e,
+ 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9,
+ 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1,
+ 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f,
+ 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030,
+ 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1,
+ 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x70d9,
+ 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
+ 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184, 0x7195,
+ 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9, 0x71d4,
+ 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
+ /* 0x60 */
+ 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c,
+ 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b,
+ 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
+ 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce,
+ 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317,
+ 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325,
+ 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370,
+ 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb,
+ 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425,
+ 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441,
+ 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b,
+ 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
+ /* 0x61 */
+ 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
+ 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
+ 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
+ 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
+ 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
+ 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
+ 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
+ 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc,
+ 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609,
+ 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
+ 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662,
+ 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
+ /* 0x62 */
+ 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b,
+ 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8,
+ 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1,
+ 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704,
+ 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738,
+ 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e,
+ 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6,
+ 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7,
+ 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926,
+ 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a,
+ 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb,
+ 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
+ /* 0x63 */
+ 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919,
+ 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955,
+ 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa,
+ 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec,
+ 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f,
+ 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49,
+ 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88,
+ 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6,
+ 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd, 0x7acf,
+ 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2, 0x7ae6,
+ 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33, 0x7b18,
+ 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
+ /* 0x64 */
+ 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65,
+ 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98,
+ 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d,
+ 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd,
+ 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07,
+ 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27,
+ 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54,
+ 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65,
+ 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab,
+ 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd,
+ 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b,
+ 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
+ /* 0x65 */
+ 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
+ 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
+ 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
+ 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
+ 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
+ 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
+ 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
+ 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32,
+ 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79,
+ 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae,
+ 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94,
+ 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
+ /* 0x66 */
+ 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54,
+ 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82,
+ 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d,
+ 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8,
+ 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6,
+ 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012,
+ 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a,
+ 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073,
+ 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086,
+ 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db,
+ 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef,
+ 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
+ /* 0x67 */
+ 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e,
+ 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182,
+ 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0,
+ 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9,
+ 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0,
+ 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207,
+ 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233,
+ 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x8262,
+ 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278, 0x827e,
+ 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1, 0x82e3,
+ 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303, 0x82fb,
+ 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
+ /* 0x68 */
+ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
+ 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa,
+ 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c,
+ 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413,
+ 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7,
+ 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438,
+ 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477,
+ 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f,
+ 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9,
+ 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1,
+ 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515,
+ 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
+ /* 0x69 */
+ 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
+ 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
+ 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
+ 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
+ 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
+ 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
+ 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
+ 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df,
+ 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb,
+ 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737,
+ 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c,
+ 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
+ /* 0x6a */
+ 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af,
+ 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3,
+ 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d,
+ 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815,
+ 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844,
+ 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e,
+ 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892,
+ 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1,
+ 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902,
+ 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913,
+ 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b,
+ 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
+ /* 0x6b */
+ 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e,
+ 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6,
+ 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da,
+ 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10,
+ 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52,
+ 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82,
+ 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3,
+ 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4,
+ 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb, 0x8b0c,
+ 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20, 0x8b33,
+ 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c, 0x8b4f,
+ 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
+ /* 0x6c */
+ 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e,
+ 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f,
+ 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78,
+ 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94,
+ 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3,
+ 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd,
+ 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d,
+ 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d,
+ 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf,
+ 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf,
+ 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10,
+ 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
+ /* 0x6d */
+ 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
+ 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
+ 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
+ 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
+ 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
+ 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
+ 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
+ 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62,
+ 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7,
+ 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005,
+ 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016,
+ 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
+ /* 0x6e */
+ 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056,
+ 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082,
+ 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af,
+ 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112,
+ 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165,
+ 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab,
+ 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9,
+ 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5,
+ 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e,
+ 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b,
+ 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9,
+ 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
+ /* 0x6f */
+ 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c,
+ 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394,
+ 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd,
+ 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407,
+ 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452,
+ 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470,
+ 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f,
+ 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x95a0,
+ 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be, 0x95ca,
+ 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6, 0x95dc,
+ 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f, 0x9642,
+ 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
+ /* 0x70 */
+ 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695,
+ 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6,
+ 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc,
+ 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e,
+ 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739,
+ 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c,
+ 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779,
+ 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790,
+ 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6,
+ 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6,
+ 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d,
+ 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
+ /* 0x71 */
+ 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
+ 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
+ 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
+ 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
+ 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
+ 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
+ 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
+ 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e,
+ 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64,
+ 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf,
+ 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6,
+ 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
+ /* 0x72 */
+ 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25,
+ 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44,
+ 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93,
+ 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4,
+ 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3,
+ 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0,
+ 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12,
+ 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30,
+ 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76,
+ 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03,
+ 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15,
+ 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
+ /* 0x73 */
+ 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89,
+ 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2,
+ 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2,
+ 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a,
+ 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b,
+ 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8,
+ 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4,
+ 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4,
+ 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07, 0x9f08,
+ 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52, 0x9f54,
+ 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c, 0x9f6a,
+ 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
+ /* 0x74 */
+ 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199,
+};
+
+static int
+jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 690)
+ wc = jisx0208_2uni_page21[i];
+ } else {
+ if (i < 7808)
+ wc = jisx0208_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short jisx0208_2charset[6879] = {
+ 0x2140, 0x2171, 0x2172, 0x2178, 0x212f, 0x224c, 0x216b, 0x215e,
+ 0x212d, 0x2279, 0x215f, 0x2160, 0x2621, 0x2622, 0x2623, 0x2624,
+ 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c,
+ 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634,
+ 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644,
+ 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c,
+ 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654,
+ 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723,
+ 0x2724, 0x2725, 0x2726, 0x2728, 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, 0x2751, 0x2752, 0x2753,
+ 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
+ 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764,
+ 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
+ 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x213e, 0x213d,
+ 0x2142, 0x2146, 0x2147, 0x2148, 0x2149, 0x2277, 0x2278, 0x2145,
+ 0x2144, 0x2273, 0x216c, 0x216d, 0x2228, 0x216e, 0x2272, 0x222b,
+ 0x222c, 0x222a, 0x222d, 0x224d, 0x224e, 0x224f, 0x225f, 0x2250,
+ 0x2260, 0x223a, 0x223b, 0x215d, 0x2265, 0x2267, 0x2167, 0x225c,
+ 0x224a, 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x2168, 0x2268,
+ 0x2266, 0x2262, 0x2162, 0x2261, 0x2165, 0x2166, 0x2263, 0x2264,
+ 0x223e, 0x223f, 0x223c, 0x223d, 0x225d, 0x225e, 0x2821, 0x282c,
+ 0x2822, 0x282d, 0x2823, 0x282e, 0x2824, 0x282f, 0x2826, 0x2831,
+ 0x2825, 0x2830, 0x2827, 0x283c, 0x2837, 0x2832, 0x2829, 0x283e,
+ 0x2839, 0x2834, 0x2828, 0x2838, 0x283d, 0x2833, 0x282a, 0x283a,
+ 0x283f, 0x2835, 0x282b, 0x283b, 0x2840, 0x2836, 0x2223, 0x2222,
+ 0x2225, 0x2224, 0x2227, 0x2226, 0x2221, 0x217e, 0x217b, 0x217d,
+ 0x217c, 0x227e, 0x217a, 0x2179, 0x216a, 0x2169, 0x2276, 0x2275,
+ 0x2274, 0x2121, 0x2122, 0x2123, 0x2137, 0x2139, 0x213a, 0x213b,
+ 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
+ 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x2141, 0x2421,
+ 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
+ 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
+ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
+ 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
+ 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
+ 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
+ 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
+ 0x2472, 0x2473, 0x212b, 0x212c, 0x2135, 0x2136, 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, 0x2126, 0x213c, 0x2133, 0x2134,
+ 0x306c, 0x437a, 0x3c37, 0x4b7c, 0x3e66, 0x3b30, 0x3e65, 0x323c,
+ 0x4954, 0x4d3f, 0x5022, 0x312f, 0x336e, 0x5023, 0x4024, 0x5242,
+ 0x3556, 0x4a3a, 0x3e67, 0x4e3e, 0x4a42, 0x5024, 0x4366, 0x5025,
+ 0x367a, 0x5026, 0x345d, 0x4330, 0x3c67, 0x5027, 0x5028, 0x5029,
+ 0x4735, 0x3557, 0x4737, 0x4663, 0x3843, 0x4b33, 0x6949, 0x502a,
+ 0x3e68, 0x502b, 0x3235, 0x3665, 0x3870, 0x4c69, 0x5626, 0x4d70,
+ 0x467d, 0x3425, 0x3535, 0x502c, 0x502d, 0x4e3b, 0x4d3d, 0x4168,
+ 0x502f, 0x3b76, 0x4673, 0x5032, 0x313e, 0x385f, 0x385e, 0x3066,
+ 0x4f4b, 0x4f4a, 0x3a33, 0x3021, 0x5033, 0x5034, 0x5035, 0x4b34,
+ 0x5036, 0x3872, 0x3067, 0x4b72, 0x357c, 0x357d, 0x357e, 0x4462,
+ 0x4e3c, 0x5037, 0x5038, 0x5039, 0x3f4d, 0x3d3a, 0x3f4e, 0x503e,
+ 0x503c, 0x503d, 0x3558, 0x3a23, 0x3270, 0x503b, 0x503a, 0x4a29,
+ 0x3b46, 0x3b45, 0x423e, 0x503f, 0x4955, 0x4067, 0x2138, 0x5040,
+ 0x5042, 0x4265, 0x4e61, 0x304a, 0x5041, 0x323e, 0x3644, 0x4367,
+ 0x376f, 0x5043, 0x4724, 0x346b, 0x5044, 0x304b, 0x3860, 0x346c,
+ 0x497a, 0x4832, 0x3559, 0x3271, 0x5067, 0x4541, 0x476c, 0x5046,
+ 0x483c, 0x4e62, 0x3f2d, 0x3b47, 0x3b77, 0x3240, 0x4451, 0x4322,
+ 0x504a, 0x304c, 0x4463, 0x3d3b, 0x3a34, 0x4d24, 0x424e, 0x323f,
+ 0x5049, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x5050,
+ 0x5053, 0x5051, 0x3242, 0x4a3b, 0x504b, 0x504f, 0x3873, 0x3b48,
+ 0x3426, 0x5054, 0x504c, 0x4e63, 0x3b78, 0x504d, 0x5052, 0x5055,
+ 0x504e, 0x3621, 0x304d, 0x3622, 0x3241, 0x5525, 0x4b79, 0x496e,
+ 0x3874, 0x3f2f, 0x4e37, 0x4a58, 0x3738, 0x4225, 0x3264, 0x3d53,
+ 0x5059, 0x505e, 0x505c, 0x5057, 0x422f, 0x505a, 0x505d, 0x505b,
+ 0x4a5d, 0x5058, 0x3f2e, 0x4b73, 0x505f, 0x5060, 0x3d24, 0x506d,
+ 0x4750, 0x4936, 0x5068, 0x4a70, 0x3236, 0x506c, 0x5066, 0x506f,
+ 0x4152, 0x3844, 0x475c, 0x6047, 0x506e, 0x455d, 0x5063, 0x3876,
+ 0x3875, 0x5061, 0x3c5a, 0x5069, 0x4a6f, 0x434d, 0x5065, 0x3771,
+ 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x3666, 0x3770,
+ 0x5070, 0x5071, 0x5075, 0x304e, 0x4a50, 0x5074, 0x5073, 0x5077,
+ 0x5076, 0x4464, 0x3772, 0x5078, 0x3c45, 0x4226, 0x4465, 0x3676,
+ 0x5079, 0x3536, 0x507a, 0x507c, 0x4b35, 0x3766, 0x3b31, 0x4877,
+ 0x507b, 0x3a45, 0x4d43, 0x507e, 0x5123, 0x507d, 0x3a44, 0x3d7d,
+ 0x3739, 0x5124, 0x364f, 0x5121, 0x5122, 0x462f, 0x417c, 0x3623,
+ 0x4b4d, 0x5125, 0x4e3d, 0x5126, 0x5129, 0x5127, 0x414e, 0x5128,
+ 0x512a, 0x512c, 0x512b, 0x4a48, 0x3537, 0x512e, 0x512f, 0x322f,
+ 0x512d, 0x3c74, 0x5132, 0x5131, 0x5130, 0x5056, 0x5133, 0x3d7e,
+ 0x5134, 0x4d25, 0x4c59, 0x5136, 0x5135, 0x5138, 0x5137, 0x5139,
+ 0x513a, 0x3074, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, 0x4068,
+ 0x3877, 0x396e, 0x513c, 0x4c48, 0x4546, 0x3b79, 0x513b, 0x513d,
+ 0x455e, 0x3375, 0x513e, 0x467e, 0x4134, 0x5140, 0x5141, 0x482c,
+ 0x3878, 0x4f3b, 0x5142, 0x3626, 0x4a3c, 0x4236, 0x3671, 0x4535,
+ 0x3773, 0x5143, 0x5144, 0x4662, 0x315f, 0x5147, 0x3a7d, 0x5146,
+ 0x3a46, 0x5148, 0x666e, 0x5149, 0x4b41, 0x514a, 0x514b, 0x514c,
+ 0x3e69, 0x3c4c, 0x3427, 0x514f, 0x514d, 0x4c3d, 0x514e, 0x495a,
+ 0x5150, 0x5151, 0x5152, 0x455f, 0x5156, 0x5154, 0x5155, 0x5153,
+ 0x3a63, 0x5157, 0x4c6a, 0x4e64, 0x5158, 0x4028, 0x5159, 0x3d5a,
+ 0x515a, 0x437c, 0x4e3f, 0x4560, 0x5245, 0x515b, 0x7425, 0x3645,
+ 0x515c, 0x4b5e, 0x3d68, 0x427c, 0x515e, 0x4664, 0x515f, 0x5160,
+ 0x332e, 0x5161, 0x3627, 0x464c, 0x317a, 0x3d50, 0x4821, 0x5162,
+ 0x4561, 0x3f4f, 0x5163, 0x4a2c, 0x405a, 0x3422, 0x3429, 0x5164,
+ 0x5166, 0x373a, 0x5165, 0x4e73, 0x3d69, 0x483d, 0x4a4c, 0x5167,
+ 0x4d78, 0x5168, 0x5169, 0x457e, 0x516a, 0x4029, 0x3a7e, 0x3774,
+ 0x516b, 0x3b49, 0x396f, 0x4466, 0x516d, 0x4227, 0x3a6f, 0x516e,
+ 0x516f, 0x4130, 0x516c, 0x5171, 0x4b36, 0x3964, 0x5170, 0x3775,
+ 0x3a5e, 0x476d, 0x5174, 0x5172, 0x497b, 0x3e6a, 0x517b, 0x3364,
+ 0x5175, 0x5173, 0x414f, 0x5177, 0x5176, 0x3344, 0x3760, 0x517c,
+ 0x4e2d, 0x5178, 0x517d, 0x517a, 0x5179, 0x4e4f, 0x3879, 0x3243,
+ 0x4e74, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x4e65, 0x4f2b,
+ 0x5225, 0x387a, 0x5224, 0x332f, 0x5226, 0x4b56, 0x443c, 0x4d26,
+ 0x4a59, 0x5227, 0x7055, 0x4630, 0x5228, 0x342a, 0x4c33, 0x3e21,
+ 0x5229, 0x4a67, 0x522d, 0x402a, 0x522a, 0x3650, 0x522b, 0x342b,
+ 0x372e, 0x522e, 0x522f, 0x5230, 0x5231, 0x3c5b, 0x387b, 0x4c5e,
+ 0x4c68, 0x4677, 0x4a71, 0x5232, 0x5233, 0x5235, 0x5237, 0x5236,
+ 0x5238, 0x323d, 0x4b4c, 0x3a7c, 0x5239, 0x4159, 0x3e22, 0x3629,
+ 0x523a, 0x485b, 0x523b, 0x523c, 0x523d, 0x523e, 0x4924, 0x3668,
+ 0x3065, 0x463f, 0x523f, 0x3d3d, 0x4069, 0x5241, 0x5240, 0x3e23,
+ 0x3861, 0x5243, 0x483e, 0x5244, 0x485c, 0x4234, 0x426e, 0x3628,
+ 0x466e, 0x4331, 0x476e, 0x4b4e, 0x5246, 0x406a, 0x3735, 0x5247,
+ 0x5248, 0x312c, 0x3075, 0x346d, 0x4228, 0x3551, 0x4d71, 0x524b,
+ 0x3237, 0x524a, 0x362a, 0x524c, 0x4c71, 0x524d, 0x4e52, 0x387c,
+ 0x3836, 0x524e, 0x5250, 0x524f, 0x3f5f, 0x3139, 0x315e, 0x5251,
+ 0x5252, 0x3837, 0x5253, 0x356e, 0x3b32, 0x5254, 0x4b74, 0x3a35,
+ 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x3d47, 0x3c68, 0x3c75,
+ 0x3d76, 0x4840, 0x5257, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667,
+ 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
+ 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x3370, 0x3966, 0x3b4a, 0x525d,
+ 0x525e, 0x3549, 0x3346, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631,
+ 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x372f, 0x5267, 0x3663,
+ 0x4b4a, 0x485d, 0x5266, 0x345e, 0x5261, 0x5262, 0x5264, 0x5265,
+ 0x355b, 0x3f61, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x5260, 0x4f24,
+ 0x4a72, 0x4468, 0x3862, 0x3970, 0x5268, 0x465d, 0x526c, 0x3c7e,
+ 0x3c76, 0x526f, 0x526d, 0x4c23, 0x526a, 0x5273, 0x526e, 0x5271,
+ 0x3846, 0x4c3f, 0x5272, 0x5274, 0x5276, 0x3a70, 0x4f42, 0x526b,
+ 0x5269, 0x5275, 0x5270, 0x5278, 0x5323, 0x527a, 0x527e, 0x5321,
+ 0x527b, 0x533e, 0x3a69, 0x3331, 0x5279, 0x5325, 0x3076, 0x5324,
+ 0x3025, 0x494a, 0x5322, 0x527c, 0x5277, 0x527d, 0x3a48, 0x5326,
+ 0x3077, 0x532f, 0x5327, 0x5328, 0x3e25, 0x4b69, 0x532d, 0x532c,
+ 0x452f, 0x532e, 0x532b, 0x3134, 0x3a36, 0x3f30, 0x5329, 0x4562,
+ 0x532a, 0x3022, 0x5334, 0x4d23, 0x3e27, 0x533a, 0x5339, 0x5330,
+ 0x4243, 0x5331, 0x426f, 0x5336, 0x3e26, 0x5333, 0x4c64, 0x373c,
+ 0x5337, 0x5338, 0x5335, 0x533b, 0x5332, 0x5341, 0x5346, 0x5342,
+ 0x533d, 0x5347, 0x4131, 0x5349, 0x3922, 0x533f, 0x437d, 0x5343,
+ 0x533c, 0x342d, 0x346e, 0x3365, 0x5344, 0x5340, 0x3776, 0x534a,
+ 0x5348, 0x4153, 0x354a, 0x362c, 0x5345, 0x3674, 0x3144, 0x534e,
+ 0x534c, 0x5427, 0x5351, 0x534b, 0x534f, 0x534d, 0x3b4c, 0x5350,
+ 0x5353, 0x5358, 0x5356, 0x5355, 0x4332, 0x3245, 0x5352, 0x5354,
+ 0x3e28, 0x3133, 0x5357, 0x325e, 0x5362, 0x3e7c, 0x535e, 0x535c,
+ 0x535d, 0x535f, 0x313d, 0x4139, 0x5359, 0x535a, 0x337a, 0x5361,
+ 0x346f, 0x5364, 0x5360, 0x5363, 0x4a2e, 0x4655, 0x4838, 0x5366,
+ 0x5365, 0x3345, 0x5367, 0x536a, 0x5369, 0x5368, 0x4739, 0x536b,
+ 0x536c, 0x536e, 0x536d, 0x5370, 0x5373, 0x5371, 0x536f, 0x5372,
+ 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5145, 0x3c7c, 0x3b4d,
+ 0x3273, 0x3078, 0x4344, 0x5379, 0x3a24, 0x304f, 0x3f5e, 0x537a,
+ 0x3847, 0x3971, 0x537c, 0x537b, 0x4a60, 0x537d, 0x5421, 0x537e,
+ 0x5422, 0x5423, 0x3777, 0x3160, 0x5424, 0x5426, 0x5425, 0x5428,
+ 0x455a, 0x5429, 0x3035, 0x3a5f, 0x373d, 0x434f, 0x542a, 0x542b,
+ 0x542d, 0x542e, 0x3a64, 0x3651, 0x4b37, 0x542c, 0x542f, 0x3a41,
+ 0x3923, 0x5433, 0x3a25, 0x4333, 0x5430, 0x445a, 0x5434, 0x3f62,
+ 0x5432, 0x5435, 0x373f, 0x5436, 0x5437, 0x3924, 0x3340, 0x5439,
+ 0x543a, 0x543b, 0x5438, 0x5431, 0x543c, 0x543d, 0x4b64, 0x3e6b,
+ 0x543f, 0x5440, 0x543e, 0x5442, 0x4738, 0x3068, 0x4956, 0x5443,
+ 0x3e7d, 0x3c39, 0x475d, 0x3470, 0x3a6b, 0x4b59, 0x4632, 0x3778,
+ 0x424f, 0x5441, 0x5444, 0x4244, 0x5445, 0x5446, 0x5448, 0x4469,
+ 0x342e, 0x7421, 0x3161, 0x4a73, 0x3e6c, 0x4548, 0x3a66, 0x544e,
+ 0x4a3d, 0x4e5d, 0x3274, 0x544a, 0x413a, 0x544d, 0x4563, 0x4549,
+ 0x4564, 0x4839, 0x444d, 0x3a49, 0x5449, 0x3176, 0x4536, 0x544b,
+ 0x5447, 0x3f50, 0x544f, 0x3d4e, 0x362d, 0x5450, 0x4a68, 0x417d,
+ 0x4446, 0x5452, 0x4b4f, 0x5453, 0x5458, 0x4a2f, 0x5457, 0x5451,
+ 0x5454, 0x5456, 0x3a26, 0x4a49, 0x5459, 0x4345, 0x3275, 0x3e6d,
+ 0x545b, 0x545a, 0x3968, 0x545c, 0x545e, 0x545d, 0x5460, 0x5455,
+ 0x5462, 0x5461, 0x545f, 0x3b4e, 0x3f51, 0x4154, 0x5463, 0x403c,
+ 0x306d, 0x4764, 0x445b, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468,
+ 0x5469, 0x4a51, 0x546a, 0x3246, 0x546b, 0x4d3c, 0x3330, 0x5249,
+ 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x4c34, 0x546e, 0x4267, 0x4537,
+ 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x3c3a, 0x5471, 0x3050,
+ 0x5472, 0x5473, 0x3162, 0x3471, 0x4660, 0x4a74, 0x5477, 0x4155,
+ 0x5476, 0x3740, 0x4b5b, 0x5475, 0x4565, 0x5479, 0x5478, 0x547b,
+ 0x547a, 0x317c, 0x547c, 0x3e29, 0x547e, 0x4325, 0x547d, 0x4a33,
+ 0x3d77, 0x455b, 0x5521, 0x3925, 0x5522, 0x4721, 0x485e, 0x4c51,
+ 0x4725, 0x552b, 0x3538, 0x4d45, 0x4c2f, 0x562c, 0x5523, 0x5526,
+ 0x4245, 0x4b38, 0x454a, 0x5527, 0x4b65, 0x3a4a, 0x3e2a, 0x5528,
+ 0x3b50, 0x3b4f, 0x3039, 0x3848, 0x402b, 0x3051, 0x552c, 0x552d,
+ 0x552a, 0x3138, 0x342f, 0x5529, 0x4c45, 0x4931, 0x3028, 0x3079,
+ 0x3b51, 0x3052, 0x3023, 0x5532, 0x5530, 0x4c3c, 0x5533, 0x5531,
+ 0x552f, 0x3f31, 0x552e, 0x4a5a, 0x3864, 0x5537, 0x5538, 0x3e2b,
+ 0x5534, 0x4f2c, 0x474c, 0x5536, 0x3a27, 0x5539, 0x4958, 0x553a,
+ 0x5535, 0x4c3b, 0x475e, 0x553b, 0x4932, 0x553c, 0x5540, 0x553d,
+ 0x3247, 0x553f, 0x3c3b, 0x553e, 0x3779, 0x554c, 0x5545, 0x5542,
+ 0x4364, 0x5541, 0x5543, 0x5544, 0x5546, 0x5547, 0x3472, 0x5549,
+ 0x5548, 0x554a, 0x3e6e, 0x554d, 0x445c, 0x3145, 0x554b, 0x554e,
+ 0x554f, 0x5552, 0x5550, 0x5551, 0x3b52, 0x5553, 0x3926, 0x5554,
+ 0x3b7a, 0x4238, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x4c52, 0x3528,
+ 0x3849, 0x5557, 0x3358, 0x5558, 0x4239, 0x5559, 0x5623, 0x555a,
+ 0x555b, 0x555c, 0x555e, 0x555f, 0x5560, 0x4270, 0x3127, 0x3c69,
+ 0x3042, 0x4157, 0x3430, 0x3c35, 0x3928, 0x4566, 0x3d21, 0x3431,
+ 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x3c42, 0x3552, 0x406b,
+ 0x3c3c, 0x4d28, 0x5561, 0x355c, 0x3a4b, 0x3332, 0x3163, 0x3e2c,
+ 0x3248, 0x5562, 0x4d46, 0x3d49, 0x3c64, 0x5563, 0x3473, 0x4652,
+ 0x4c29, 0x5564, 0x5565, 0x4959, 0x5567, 0x3428, 0x3677, 0x5566,
+ 0x3432, 0x3f32, 0x556b, 0x3b21, 0x3249, 0x556a, 0x5568, 0x556c,
+ 0x5569, 0x472b, 0x5c4d, 0x3f33, 0x556d, 0x4e40, 0x556e, 0x5570,
+ 0x437e, 0x556f, 0x4023, 0x3b7b, 0x4250, 0x3c77, 0x4975, 0x406c,
+ 0x3c4d, 0x5571, 0x3e2d, 0x5572, 0x5573, 0x3053, 0x423a, 0x3f52,
+ 0x5574, 0x4633, 0x3e2e, 0x3e2f, 0x5575, 0x406d, 0x3e30, 0x5576,
+ 0x5577, 0x4c60, 0x5578, 0x3646, 0x3d22, 0x5579, 0x557a, 0x3c5c,
+ 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, 0x3649, 0x557b, 0x356f,
+ 0x557c, 0x367e, 0x464f, 0x3230, 0x3b53, 0x557d, 0x5622, 0x5621,
+ 0x367d, 0x557e, 0x4538, 0x4230, 0x454b, 0x3c48, 0x4158, 0x4d7a,
+ 0x5624, 0x5625, 0x4656, 0x3b33, 0x5627, 0x5628, 0x5629, 0x3474,
+ 0x562a, 0x562b, 0x322c, 0x413b, 0x3464, 0x562d, 0x4c28, 0x4252,
+ 0x3359, 0x562f, 0x5631, 0x345f, 0x562e, 0x5630, 0x5633, 0x5632,
+ 0x5634, 0x5635, 0x463d, 0x362e, 0x3265, 0x5636, 0x563b, 0x5639,
+ 0x4a77, 0x4a76, 0x4567, 0x5638, 0x3d54, 0x5637, 0x3f72, 0x563c,
+ 0x3a6a, 0x5642, 0x5643, 0x563d, 0x3333, 0x563e, 0x5647, 0x5646,
+ 0x5645, 0x5641, 0x5640, 0x5644, 0x4a78, 0x564b, 0x5648, 0x564a,
+ 0x4d72, 0x5649, 0x563f, 0x3f73, 0x564c, 0x3a37, 0x564d, 0x564e,
+ 0x5651, 0x5650, 0x564f, 0x4568, 0x563a, 0x5657, 0x5653, 0x5652,
+ 0x5654, 0x5655, 0x5658, 0x4e66, 0x5659, 0x5656, 0x565a, 0x3460,
+ 0x565b, 0x565d, 0x565c, 0x565e, 0x565f, 0x406e, 0x3d23, 0x3d64,
+ 0x4163, 0x3929, 0x3a38, 0x392a, 0x3570, 0x5660, 0x3a39, 0x384a,
+ 0x5661, 0x4c26, 0x4743, 0x5662, 0x392b, 0x342c, 0x4327, 0x3652,
+ 0x3b54, 0x495b, 0x4841, 0x5663, 0x3475, 0x5666, 0x4421, 0x5665,
+ 0x5664, 0x5667, 0x446b, 0x3f63, 0x3b55, 0x404a, 0x4253, 0x3522,
+ 0x4422, 0x5668, 0x5669, 0x3e6f, 0x4b39, 0x566c, 0x566b, 0x566a,
+ 0x497d, 0x5673, 0x4b5a, 0x566d, 0x566f, 0x4b6b, 0x566e, 0x5670,
+ 0x4828, 0x5671, 0x4a3e, 0x5672, 0x3433, 0x4a3f, 0x472f, 0x5674,
+ 0x5675, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476,
+ 0x5678, 0x4423, 0x392d, 0x3e31, 0x485f, 0x3e32, 0x3d78, 0x446c,
+ 0x4a79, 0x4539, 0x392e, 0x495c, 0x5679, 0x4559, 0x3a42, 0x384b,
+ 0x446d, 0x3043, 0x3d6e, 0x392f, 0x4d47, 0x567a, 0x567b, 0x4751,
+ 0x567c, 0x4e77, 0x4f2d, 0x567e, 0x567d, 0x3347, 0x5721, 0x5724,
+ 0x5725, 0x5723, 0x4940, 0x3e33, 0x5727, 0x5726, 0x5722, 0x5728,
+ 0x5729, 0x572a, 0x572d, 0x572b, 0x572c, 0x572e, 0x3164, 0x446e,
+ 0x572f, 0x377a, 0x3276, 0x4736, 0x5730, 0x467b, 0x4a5b, 0x5731,
+ 0x4f2e, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x3c30, 0x4675,
+ 0x5736, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, 0x3930, 0x4350,
+ 0x446f, 0x4c6f, 0x3839, 0x384c, 0x5738, 0x5739, 0x573f, 0x3c65,
+ 0x4425, 0x362f, 0x573a, 0x492b, 0x4346, 0x573b, 0x573c, 0x3630,
+ 0x573d, 0x573e, 0x5740, 0x4576, 0x5741, 0x5742, 0x5743, 0x5734,
+ 0x5733, 0x5744, 0x3741, 0x4927, 0x3a4c, 0x4937, 0x4426, 0x494b,
+ 0x5745, 0x3e34, 0x3146, 0x5746, 0x5747, 0x4c72, 0x4860, 0x574a,
+ 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x574e, 0x574c,
+ 0x574b, 0x4e27, 0x3865, 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x4640,
+ 0x5751, 0x5750, 0x574f, 0x5752, 0x3866, 0x5753, 0x497c, 0x3d5b,
+ 0x5754, 0x4879, 0x4641, 0x4427, 0x4530, 0x5755, 0x352b, 0x3f34,
+ 0x492c, 0x3477, 0x4726, 0x5756, 0x3b56, 0x4b3a, 0x4b3b, 0x317e,
+ 0x575b, 0x4369, 0x5758, 0x3277, 0x582d, 0x575a, 0x4730, 0x5759,
+ 0x5757, 0x397a, 0x575d, 0x5763, 0x5769, 0x5761, 0x455c, 0x5766,
+ 0x495d, 0x5760, 0x5765, 0x4e67, 0x3b57, 0x4255, 0x575e, 0x355e,
+ 0x5768, 0x402d, 0x3165, 0x5762, 0x3278, 0x5767, 0x3631, 0x5764,
+ 0x576a, 0x576c, 0x5776, 0x5774, 0x5771, 0x5770, 0x4e78, 0x5772,
+ 0x3632, 0x3931, 0x3d7a, 0x5779, 0x576b, 0x576f, 0x575f, 0x327a,
+ 0x5773, 0x5775, 0x4351, 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777,
+ 0x3633, 0x4229, 0x3366, 0x3743, 0x576e, 0x577a, 0x577d, 0x5821,
+ 0x3c3d, 0x5827, 0x4470, 0x577b, 0x5825, 0x3279, 0x5823, 0x5824,
+ 0x577e, 0x5822, 0x3867, 0x4d2a, 0x3435, 0x3159, 0x5826, 0x473a,
+ 0x302d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x5829, 0x4569,
+ 0x582e, 0x3e70, 0x582f, 0x4657, 0x4f47, 0x582b, 0x5831, 0x397b,
+ 0x404b, 0x3054, 0x582a, 0x5828, 0x415a, 0x577c, 0x3b34, 0x4246,
+ 0x583d, 0x415b, 0x5838, 0x5835, 0x5836, 0x3c66, 0x5839, 0x583c,
+ 0x5837, 0x3d25, 0x583a, 0x5834, 0x4c7c, 0x4c7b, 0x583e, 0x583f,
+ 0x3055, 0x5833, 0x3672, 0x3026, 0x3436, 0x583b, 0x5843, 0x5842,
+ 0x5847, 0x5848, 0x5846, 0x5849, 0x5841, 0x5845, 0x584a, 0x584b,
+ 0x5840, 0x3b7c, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x5858,
+ 0x4a69, 0x584e, 0x584f, 0x5850, 0x5857, 0x5856, 0x4b7d, 0x3437,
+ 0x5854, 0x3745, 0x3334, 0x5851, 0x4e38, 0x5853, 0x3056, 0x5855,
+ 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, 0x4d5d, 0x4d2b, 0x585c,
+ 0x5860, 0x417e, 0x4e79, 0x5861, 0x585e, 0x585b, 0x585a, 0x585f,
+ 0x4a30, 0x4634, 0x3746, 0x5862, 0x585d, 0x5863, 0x377b, 0x3231,
+ 0x586b, 0x3438, 0x5869, 0x586a, 0x3a29, 0x5868, 0x5866, 0x5865,
+ 0x586c, 0x5864, 0x586e, 0x327b, 0x5870, 0x586f, 0x4428, 0x5873,
+ 0x5871, 0x5867, 0x377c, 0x5872, 0x5876, 0x5875, 0x5877, 0x5874,
+ 0x5878, 0x5879, 0x587a, 0x4a6a, 0x587c, 0x587b, 0x3d3f, 0x402e,
+ 0x3266, 0x327c, 0x587d, 0x303f, 0x404c, 0x587e, 0x6c43, 0x5921,
+ 0x3761, 0x5922, 0x406f, 0x5923, 0x5924, 0x353a, 0x5925, 0x5926,
+ 0x5927, 0x4257, 0x384d, 0x4c61, 0x4b3c, 0x3d6a, 0x5928, 0x4070,
+ 0x6e3d, 0x4862, 0x3c6a, 0x3a4d, 0x5929, 0x4247, 0x4a27, 0x4271,
+ 0x592c, 0x592a, 0x592d, 0x592b, 0x592e, 0x4a31, 0x3037, 0x495e,
+ 0x4863, 0x592f, 0x5932, 0x3e35, 0x353b, 0x5930, 0x5937, 0x3e36,
+ 0x5931, 0x4744, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935,
+ 0x3933, 0x405e, 0x5946, 0x4834, 0x4272, 0x4864, 0x5a2d, 0x4a7a,
+ 0x4471, 0x4b75, 0x593b, 0x3221, 0x436a, 0x5944, 0x4334, 0x593e,
+ 0x5945, 0x5940, 0x5947, 0x5943, 0x5942, 0x476f, 0x593c, 0x327d,
+ 0x593a, 0x3571, 0x4273, 0x5936, 0x5939, 0x3934, 0x405b, 0x3e37,
+ 0x5941, 0x4752, 0x3572, 0x3348, 0x3367, 0x3f21, 0x5949, 0x594e,
+ 0x594a, 0x377d, 0x594f, 0x3b22, 0x3969, 0x3d26, 0x593d, 0x3b7d,
+ 0x594c, 0x3b58, 0x594d, 0x3044, 0x5948, 0x4429, 0x3573, 0x3634,
+ 0x594b, 0x3027, 0x3a43, 0x3f36, 0x4472, 0x4854, 0x5951, 0x415e,
+ 0x422a, 0x3b2b, 0x5952, 0x5954, 0x5950, 0x4a61, 0x443d, 0x415c,
+ 0x4a7b, 0x3c4e, 0x5960, 0x595f, 0x3f78, 0x377e, 0x5959, 0x3e39,
+ 0x4668, 0x4731, 0x5957, 0x415d, 0x3c78, 0x595c, 0x3e38, 0x5956,
+ 0x595b, 0x4753, 0x5955, 0x3721, 0x335d, 0x595d, 0x4e2b, 0x3a4e,
+ 0x4335, 0x595a, 0x405c, 0x3935, 0x3f64, 0x3166, 0x413c, 0x5958,
+ 0x3545, 0x3747, 0x444f, 0x595e, 0x415f, 0x5961, 0x5963, 0x4237,
+ 0x5969, 0x5964, 0x5966, 0x4941, 0x4473, 0x5967, 0x4d2c, 0x4d48,
+ 0x3439, 0x302e, 0x5965, 0x5962, 0x3478, 0x3167, 0x5968, 0x4d49,
+ 0x596c, 0x423b, 0x5973, 0x596d, 0x596a, 0x5971, 0x5953, 0x596e,
+ 0x5972, 0x4842, 0x456b, 0x596b, 0x596f, 0x3748, 0x3a71, 0x405d,
+ 0x5977, 0x4526, 0x5974, 0x4b60, 0x5975, 0x5976, 0x4c4e, 0x4022,
+ 0x3762, 0x597d, 0x3b35, 0x597a, 0x5979, 0x4732, 0x4635, 0x4531,
+ 0x597b, 0x597c, 0x496f, 0x4745, 0x3b23, 0x4071, 0x4b50, 0x3349,
+ 0x5a25, 0x597e, 0x4d4a, 0x5a27, 0x5a23, 0x5a24, 0x4160, 0x5a22,
+ 0x593f, 0x5a26, 0x5a21, 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x3b24,
+ 0x5a29, 0x353c, 0x5a2f, 0x5a28, 0x5a33, 0x5a32, 0x5a31, 0x5a34,
+ 0x5a36, 0x3e71, 0x5a35, 0x5a39, 0x5a37, 0x5a38, 0x5970, 0x5a3b,
+ 0x5a3a, 0x5978, 0x5a3c, 0x5a30, 0x3b59, 0x5a3d, 0x5a3e, 0x5a40,
+ 0x5a3f, 0x5a41, 0x327e, 0x3936, 0x4a7c, 0x402f, 0x384e, 0x5a43,
+ 0x5a46, 0x4952, 0x355f, 0x5a45, 0x5a44, 0x4754, 0x5a47, 0x3635,
+ 0x5a49, 0x5a48, 0x343a, 0x3b36, 0x4658, 0x3749, 0x3f74, 0x5a4a,
+ 0x4030, 0x4528, 0x495f, 0x5a4b, 0x5a4c, 0x5a4d, 0x4a38, 0x555d,
+ 0x4046, 0x494c, 0x3a58, 0x4865, 0x4843, 0x454d, 0x4e41, 0x5a4f,
+ 0x3c50, 0x5a50, 0x3036, 0x3654, 0x404d, 0x4960, 0x5a51, 0x3b42,
+ 0x4347, 0x3b5b, 0x3f37, 0x5a52, 0x4a7d, 0x3177, 0x3b5c, 0x5a55,
+ 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x407b, 0x5a57, 0x4232, 0x5a58,
+ 0x347a, 0x5a5a, 0x5a59, 0x5a5b, 0x5a5c, 0x347b, 0x467c, 0x4336,
+ 0x356c, 0x3b5d, 0x4161, 0x3d5c, 0x3030, 0x5a5d, 0x3222, 0x5a61,
+ 0x3937, 0x5a60, 0x3a2b, 0x3e3a, 0x5a5f, 0x3e3b, 0x4c40, 0x3a2a,
+ 0x3057, 0x404e, 0x5a66, 0x4031, 0x3147, 0x3d55, 0x4b66, 0x3a72,
+ 0x3e3c, 0x4027, 0x5a65, 0x5a63, 0x5a64, 0x436b, 0x5b26, 0x5a6a,
+ 0x3b7e, 0x3938, 0x5a68, 0x5a69, 0x3f38, 0x5a67, 0x3b2f, 0x5a6c,
+ 0x5a6b, 0x5a70, 0x5a71, 0x5a6d, 0x3322, 0x5a6e, 0x5a6f, 0x4855,
+ 0x4961, 0x374a, 0x5a72, 0x4032, 0x3e3d, 0x4352, 0x3647, 0x5a73,
+ 0x5a77, 0x324b, 0x5a74, 0x5a76, 0x5a75, 0x3d6b, 0x4348, 0x3045,
+ 0x5a78, 0x5a79, 0x442a, 0x4e71, 0x3b43, 0x4a6b, 0x4b3d, 0x5b22,
+ 0x5a7b, 0x5a7e, 0x5a7d, 0x5a7a, 0x5b21, 0x465e, 0x5a7c, 0x5b23,
+ 0x3d6c, 0x5b24, 0x4d4b, 0x4778, 0x5b25, 0x5b27, 0x5b28, 0x5b29,
+ 0x364a, 0x3148, 0x3939, 0x5b2a, 0x5b2b, 0x3d71, 0x4162, 0x5258,
+ 0x413e, 0x413d, 0x4258, 0x3a47, 0x5072, 0x376e, 0x4d2d, 0x4a7e,
+ 0x497e, 0x5b2c, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, 0x4b3e, 0x442b,
+ 0x5b2e, 0x347c, 0x5b2f, 0x5b30, 0x4c5a, 0x4c24, 0x4b76, 0x4b5c,
+ 0x3b25, 0x5b32, 0x3c6b, 0x4b51, 0x5b34, 0x5b37, 0x5b36, 0x3479,
+ 0x3560, 0x5b33, 0x5b35, 0x5b38, 0x3f79, 0x4d7b, 0x3049, 0x3a60,
+ 0x423c, 0x3c5d, 0x3e73, 0x5b3b, 0x454e, 0x5b39, 0x422b, 0x5b3a,
+ 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x5b42, 0x393a, 0x4755,
+ 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x354f, 0x4747, 0x5b41, 0x3e3e,
+ 0x4844, 0x5b47, 0x487a, 0x5b3e, 0x5b44, 0x5b43, 0x404f, 0x4b6d,
+ 0x4e53, 0x4b67, 0x324c, 0x3b5e, 0x4f48, 0x5b46, 0x3f75, 0x5b45,
+ 0x5b40, 0x384f, 0x5b4c, 0x5b4a, 0x324d, 0x5b48, 0x5b4e, 0x5b54,
+ 0x4248, 0x4a41, 0x5b56, 0x4922, 0x5b55, 0x4770, 0x4b3f, 0x343b,
+ 0x4077, 0x3d40, 0x4453, 0x4d2e, 0x5b51, 0x5b50, 0x5b52, 0x5b4f,
+ 0x5b57, 0x5b4d, 0x5b4b, 0x5b53, 0x5b49, 0x436c, 0x4c78, 0x3c46,
+ 0x3a74, 0x3a3a, 0x4b6f, 0x3341, 0x444e, 0x464a, 0x3149, 0x4072,
+ 0x4034, 0x372a, 0x5b59, 0x393b, 0x337c, 0x5b5b, 0x3374, 0x5b61,
+ 0x5b5e, 0x4073, 0x334b, 0x3a2c, 0x334a, 0x3a4f, 0x5b5c, 0x3765,
+ 0x374b, 0x456d, 0x5b5a, 0x3046, 0x5b5d, 0x5b5f, 0x364d, 0x372c,
+ 0x343c, 0x354b, 0x5b62, 0x3a79, 0x4b71, 0x3b37, 0x5b63, 0x4930,
+ 0x5b6f, 0x3233, 0x5b64, 0x5b75, 0x5b65, 0x4e42, 0x5b6c, 0x475f,
+ 0x5b74, 0x5b67, 0x3034, 0x5b69, 0x393c, 0x5b6b, 0x5b6a, 0x5b66,
+ 0x5b71, 0x3e3f, 0x546d, 0x3868, 0x4d7c, 0x5b68, 0x4474, 0x3323,
+ 0x3a2d, 0x5b60, 0x5b70, 0x3361, 0x5b6e, 0x5b72, 0x456e, 0x347e,
+ 0x5c32, 0x4c49, 0x5b77, 0x347d, 0x5b7e, 0x4b40, 0x5c21, 0x5c23,
+ 0x5c27, 0x5b79, 0x432a, 0x456f, 0x5c2b, 0x5b7c, 0x5c28, 0x5c22,
+ 0x3f39, 0x5c2c, 0x4033, 0x5c2a, 0x343d, 0x4f50, 0x5b76, 0x5c26,
+ 0x3058, 0x5b78, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, 0x5c25,
+ 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x5c31, 0x5b7a, 0x5c30, 0x5c29,
+ 0x5b7b, 0x5c2d, 0x5c2e, 0x5c3f, 0x464e, 0x5c24, 0x5c3b, 0x5c3d,
+ 0x4458, 0x4d4c, 0x4976, 0x5c38, 0x424a, 0x5c3e, 0x413f, 0x5c35,
+ 0x5c42, 0x5c41, 0x466f, 0x5c40, 0x466a, 0x5c44, 0x5c37, 0x3648,
+ 0x5c3a, 0x3d5d, 0x4760, 0x5c3c, 0x364b, 0x5c34, 0x5c36, 0x5c33,
+ 0x4f30, 0x335a, 0x5c39, 0x5c43, 0x3335, 0x3a67, 0x315d, 0x5c54,
+ 0x4f31, 0x5c57, 0x3f3a, 0x5c56, 0x5c55, 0x5c52, 0x5c46, 0x5c63,
+ 0x5c45, 0x5c58, 0x5c50, 0x5c4b, 0x5c48, 0x5c49, 0x5c51, 0x7422,
+ 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x5c47, 0x5c4a, 0x4d4d,
+ 0x4b6a, 0x5c4f, 0x5c59, 0x5c61, 0x5c5a, 0x5c67, 0x5c65, 0x5c60,
+ 0x5c5f, 0x4450, 0x4165, 0x5c5d, 0x5c5b, 0x5c62, 0x5c68, 0x4875,
+ 0x5c6e, 0x5c69, 0x5c6c, 0x5c66, 0x4374, 0x4938, 0x5c5c, 0x5c64,
+ 0x3e40, 0x4c4f, 0x5c78, 0x5c6b, 0x3822, 0x3223, 0x335f, 0x5c53,
+ 0x3e41, 0x5c70, 0x5c77, 0x3c79, 0x3372, 0x432e, 0x5c6d, 0x5c72,
+ 0x5c76, 0x3636, 0x354c, 0x5c74, 0x3521, 0x464b, 0x5c73, 0x5c75,
+ 0x5c6f, 0x5c71, 0x3360, 0x4349, 0x5c7c, 0x5c7a, 0x3869, 0x5c79,
+ 0x5d21, 0x5b58, 0x5c7b, 0x5c7d, 0x5c7e, 0x5d2c, 0x5d28, 0x5b6d,
+ 0x5d27, 0x5d26, 0x5d23, 0x5c6a, 0x5d25, 0x5d24, 0x5d2a, 0x4f26,
+ 0x5d2d, 0x367b, 0x5d29, 0x5d2b, 0x4827, 0x5d2e, 0x5d32, 0x5d2f,
+ 0x4d73, 0x5d30, 0x5c5e, 0x5d33, 0x5d34, 0x3135, 0x5d36, 0x3767,
+ 0x3c21, 0x3655, 0x3224, 0x4d5f, 0x5d38, 0x5d37, 0x5d3a, 0x353d,
+ 0x3656, 0x343e, 0x5d3d, 0x5d3c, 0x5d3e, 0x324e, 0x4337, 0x5d3f,
+ 0x343f, 0x5d41, 0x5d40, 0x5d42, 0x5d43, 0x5d44, 0x3b5f, 0x4035,
+ 0x3a21, 0x4970, 0x4a62, 0x4f44, 0x3b75, 0x3a50, 0x4e72, 0x5d45,
+ 0x5d46, 0x3b60, 0x5d47, 0x5d48, 0x5d4a, 0x5d49, 0x4b58, 0x3d5e,
+ 0x3c6c, 0x3b44, 0x5d4b, 0x5d4d, 0x3f23, 0x5d4c, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a,
+ 0x5d56, 0x3b26, 0x334c, 0x5d57, 0x4542, 0x544c, 0x3523, 0x5d58,
+ 0x5d59, 0x4a6c, 0x4b68, 0x4647, 0x5d5a, 0x4866, 0x487b, 0x4c53,
+ 0x5d5b, 0x5d5d, 0x5d5c, 0x5d5f, 0x5d5e, 0x5d61, 0x3b61, 0x4c31,
+ 0x5d62, 0x5d63, 0x3524, 0x5d64, 0x5d66, 0x5d65, 0x3f65, 0x4939,
+ 0x314a, 0x4845, 0x4475, 0x3d41, 0x3561, 0x4846, 0x3c2e, 0x5d68,
+ 0x3440, 0x3178, 0x4672, 0x5d67, 0x393e, 0x4353, 0x5d69, 0x5d71,
+ 0x5d6a, 0x4241, 0x3562, 0x5d72, 0x3768, 0x3525, 0x5d70, 0x5d6e,
+ 0x5d6b, 0x4d60, 0x4440, 0x4659, 0x5d6c, 0x5d74, 0x5d73, 0x3723,
+ 0x322d, 0x3a3b, 0x5d6d, 0x5d6f, 0x4b57, 0x4274, 0x4b77, 0x5d7c,
+ 0x5d7d, 0x324f, 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78,
+ 0x5d7e, 0x3168, 0x3637, 0x5d75, 0x5d7a, 0x4074, 0x4771, 0x4867,
+ 0x5d77, 0x4b21, 0x5d79, 0x5e24, 0x5e22, 0x5d7b, 0x4b22, 0x4748,
+ 0x3563, 0x4525, 0x436d, 0x5e25, 0x5e23, 0x4259, 0x5d76, 0x314b,
+ 0x4d4e, 0x5e30, 0x5e2f, 0x4076, 0x5e2c, 0x4d6c, 0x4636, 0x5e26,
+ 0x4445, 0x314c, 0x393f, 0x5e29, 0x3d27, 0x5e2e, 0x5e2d, 0x5e28,
+ 0x5e2b, 0x3368, 0x5e2a, 0x4749, 0x4e2e, 0x3e74, 0x4075, 0x5e36,
+ 0x5e34, 0x494d, 0x5e31, 0x5e33, 0x313a, 0x3940, 0x4f32, 0x333d,
+ 0x4962, 0x4d61, 0x3324, 0x3f3b, 0x5e35, 0x5e3a, 0x3e43, 0x4d30,
+ 0x5e37, 0x5e32, 0x5e38, 0x4e5e, 0x4573, 0x4642, 0x3336, 0x3155,
+ 0x5e3e, 0x5e41, 0x4e43, 0x4d64, 0x5e48, 0x5e42, 0x5e3f, 0x4e54,
+ 0x5e45, 0x3d4a, 0x5e47, 0x5e4c, 0x4571, 0x5e4a, 0x5e44, 0x4338,
+ 0x5e4b, 0x5e40, 0x5e46, 0x5e4d, 0x307c, 0x5e43, 0x5e4e, 0x3f3c,
+ 0x3d5f, 0x4a25, 0x3a2e, 0x5e3b, 0x5e49, 0x453a, 0x4036, 0x3369,
+ 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x374c, 0x5e3c, 0x5e52, 0x3d6d,
+ 0x383a, 0x5e61, 0x5e5b, 0x3574, 0x454f, 0x5e56, 0x5e5f, 0x302f,
+ 0x3132, 0x3239, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, 0x5e62,
+ 0x5e5d, 0x5e55, 0x5e5c, 0x4c2b, 0x5e5a, 0x5e5e, 0x3850, 0x3e45,
+ 0x4339, 0x5e54, 0x4d2f, 0x5e57, 0x5e50, 0x4572, 0x5e53, 0x5e59,
+ 0x4f51, 0x3c3e, 0x4b7e, 0x5e63, 0x482e, 0x5e6f, 0x383b, 0x3d60,
+ 0x5e65, 0x4e2f, 0x3942, 0x5e72, 0x306e, 0x5e70, 0x5e64, 0x5e6a,
+ 0x5e6c, 0x4d4f, 0x5e67, 0x452e, 0x5e69, 0x5e71, 0x5e6b, 0x4c47,
+ 0x5e66, 0x3c22, 0x5e7e, 0x336a, 0x5e68, 0x5e6d, 0x5e6e, 0x426c,
+ 0x425a, 0x5e76, 0x5e7c, 0x5e7a, 0x4529, 0x5f23, 0x5e77, 0x5e78,
+ 0x5e60, 0x3579, 0x493a, 0x3c3f, 0x3977, 0x4f33, 0x5e74, 0x5f22,
+ 0x3169, 0x4166, 0x4779, 0x3441, 0x4e7a, 0x4c21, 0x4452, 0x5e7b,
+ 0x5e7d, 0x4132, 0x5f21, 0x5e79, 0x5e73, 0x3443, 0x3769, 0x5f2f,
+ 0x5f2a, 0x4078, 0x3363, 0x3d61, 0x5f33, 0x5f2c, 0x442c, 0x5f29,
+ 0x4459, 0x5f4c, 0x5f26, 0x5f25, 0x5f2e, 0x5f28, 0x5f27, 0x5f2d,
+ 0x4021, 0x5f24, 0x5f30, 0x5f31, 0x3442, 0x5f36, 0x5f35, 0x5f37,
+ 0x5f3a, 0x4543, 0x5f34, 0x5f38, 0x3763, 0x4279, 0x5f32, 0x473b,
+ 0x5f39, 0x5f3e, 0x5f3c, 0x5f3f, 0x5f42, 0x5f3b, 0x396a, 0x4728,
+ 0x5e39, 0x4d74, 0x5f3d, 0x5f41, 0x4275, 0x5f40, 0x5f2b, 0x6f69,
+ 0x5f45, 0x5f49, 0x5f47, 0x5f43, 0x5f44, 0x5f48, 0x5f46, 0x494e,
+ 0x5f4e, 0x5f4b, 0x5f4a, 0x5f4d, 0x4654, 0x5f4f, 0x4375, 0x426d,
+ 0x4025, 0x5f50, 0x5f52, 0x5f51, 0x5e75, 0x5f53, 0x4667, 0x5f54,
+ 0x3250, 0x4574, 0x3325, 0x3564, 0x3c5e, 0x3a52, 0x4f27, 0x3f66,
+ 0x316a, 0x5f56, 0x5f55, 0x5f59, 0x433a, 0x5f5c, 0x5f57, 0x5f5b,
+ 0x5f5a, 0x4540, 0x3059, 0x4e75, 0x5f5e, 0x3128, 0x5f60, 0x5f5f,
+ 0x5f5d, 0x5f58, 0x4b23, 0x5f62, 0x5f61, 0x316b, 0x5f64, 0x4a32,
+ 0x5f63, 0x4c35, 0x3e47, 0x4133, 0x3e46, 0x4e7b, 0x5f6a, 0x4079,
+ 0x5f66, 0x5f6b, 0x316c, 0x5f69, 0x4761, 0x5f65, 0x5f68, 0x3e48,
+ 0x4851, 0x5f6c, 0x3c51, 0x407a, 0x5f6f, 0x5f67, 0x3727, 0x5f6d,
+ 0x4d50, 0x5f70, 0x7426, 0x3d4f, 0x5f71, 0x5f72, 0x472e, 0x5f74,
+ 0x5f75, 0x4733, 0x4575, 0x5f77, 0x5f79, 0x4e55, 0x5f76, 0x5f78,
+ 0x316d, 0x5f73, 0x535b, 0x5f7a, 0x4167, 0x3b38, 0x5f7c, 0x5f7b,
+ 0x3f24, 0x5259, 0x5f7d, 0x6021, 0x5f6e, 0x5f7e, 0x6022, 0x477a,
+ 0x6023, 0x6024, 0x6025, 0x6026, 0x445e, 0x6028, 0x6027, 0x6029,
+ 0x602a, 0x3c5f, 0x4963, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24,
+ 0x602d, 0x602e, 0x602f, 0x4a52, 0x4847, 0x6030, 0x4757, 0x442d,
+ 0x6031, 0x3267, 0x356d, 0x4c46, 0x4c36, 0x3234, 0x4f34, 0x4b52,
+ 0x4a2a, 0x4037, 0x6032, 0x4643, 0x3823, 0x6033, 0x3a54, 0x6035,
+ 0x6034, 0x6036, 0x6037, 0x6038, 0x353e, 0x6039, 0x603a, 0x3824,
+ 0x4848, 0x603c, 0x3e75, 0x603b, 0x3638, 0x603d, 0x603f, 0x603e,
+ 0x6040, 0x3851, 0x6041, 0x3669, 0x4140, 0x397d, 0x6043, 0x6044,
+ 0x6042, 0x3c6d, 0x4648, 0x3639, 0x6046, 0x432c, 0x6045, 0x4f35,
+ 0x4762, 0x6049, 0x604b, 0x6048, 0x4c54, 0x604a, 0x604c, 0x4e44,
+ 0x6050, 0x604f, 0x4376, 0x472d, 0x3825, 0x604e, 0x604d, 0x4d31,
+ 0x4d32, 0x6051, 0x316e, 0x3976, 0x3b62, 0x6052, 0x6053, 0x6055,
+ 0x3d43, 0x6057, 0x6056, 0x6058, 0x334d, 0x605a, 0x6059, 0x605c,
+ 0x605b, 0x383c, 0x4e28, 0x364c, 0x3226, 0x366a, 0x3461, 0x4e68,
+ 0x605e, 0x6060, 0x6061, 0x3251, 0x605d, 0x3b39, 0x4441, 0x605f,
+ 0x6064, 0x3c6e, 0x6062, 0x373e, 0x4849, 0x6063, 0x607e, 0x6069,
+ 0x383d, 0x3565, 0x6066, 0x4d7d, 0x4e30, 0x4276, 0x6068, 0x606a,
+ 0x4e56, 0x3657, 0x487c, 0x474a, 0x606b, 0x606d, 0x6070, 0x606c,
+ 0x606f, 0x386a, 0x314d, 0x6071, 0x3f70, 0x606e, 0x4e5c, 0x6074,
+ 0x7424, 0x6072, 0x6075, 0x6067, 0x6073, 0x3a3c, 0x6076, 0x6077,
+ 0x4d7e, 0x6078, 0x6079, 0x6065, 0x607a, 0x3444, 0x3c25, 0x607b,
+ 0x607c, 0x607d, 0x313b, 0x6121, 0x493b, 0x6122, 0x3424, 0x6123,
+ 0x6124, 0x6125, 0x6127, 0x6128, 0x6126, 0x4953, 0x612a, 0x6129,
+ 0x612c, 0x612b, 0x612d, 0x612e, 0x6130, 0x612f, 0x3979, 0x6132,
+ 0x6131, 0x3445, 0x3f53, 0x453c, 0x6133, 0x4038, 0x3b3a, 0x3179,
+ 0x6134, 0x4d51, 0x4a63, 0x6135, 0x4544, 0x4d33, 0x3943, 0x3f3d,
+ 0x434b, 0x5234, 0x442e, 0x3268, 0x6136, 0x6137, 0x613c, 0x613a,
+ 0x6139, 0x5a42, 0x3326, 0x6138, 0x305a, 0x482a, 0x484a, 0x4e31,
+ 0x613d, 0x613b, 0x435c, 0x4026, 0x482b, 0x492d, 0x613f, 0x4e2c,
+ 0x374d, 0x6140, 0x613e, 0x4856, 0x6141, 0x6142, 0x305b, 0x3e76,
+ 0x6147, 0x6144, 0x466d, 0x6143, 0x3526, 0x614a, 0x6145, 0x6146,
+ 0x6149, 0x6148, 0x4925, 0x4142, 0x4141, 0x353f, 0x614b, 0x614c,
+ 0x614d, 0x614f, 0x614e, 0x3156, 0x6157, 0x4868, 0x6151, 0x6153,
+ 0x6155, 0x3f3e, 0x6156, 0x6154, 0x3c40, 0x6150, 0x6152, 0x4942,
+ 0x3e49, 0x6159, 0x6158, 0x615a, 0x3c26, 0x3a2f, 0x4577, 0x615b,
+ 0x444b, 0x615d, 0x4e21, 0x615c, 0x4169, 0x6162, 0x6164, 0x6165,
+ 0x4354, 0x6163, 0x6160, 0x615e, 0x615f, 0x6161, 0x6168, 0x6166,
+ 0x6167, 0x6169, 0x616b, 0x616c, 0x616d, 0x616e, 0x616a, 0x6170,
+ 0x616f, 0x6171, 0x4e45, 0x6174, 0x6172, 0x6173, 0x3462, 0x4c7e,
+ 0x4a4a, 0x6176, 0x6175, 0x6177, 0x6178, 0x617c, 0x6179, 0x617a,
+ 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x482f, 0x4550,
+ 0x6224, 0x4772, 0x4934, 0x6225, 0x6226, 0x452a, 0x3327, 0x3944,
+ 0x6227, 0x6228, 0x6229, 0x3b29, 0x622b, 0x622a, 0x622c, 0x622d,
+ 0x4869, 0x622e, 0x622f, 0x7369, 0x6230, 0x6231, 0x6232, 0x3b2e,
+ 0x6233, 0x4756, 0x4b5f, 0x314e, 0x3157, 0x6234, 0x6236, 0x6235,
+ 0x4570, 0x4039, 0x5d39, 0x6237, 0x4c41, 0x6238, 0x3446, 0x4857,
+ 0x6239, 0x623a, 0x623b, 0x4c5c, 0x4c55, 0x443e, 0x416a, 0x623d,
+ 0x3d62, 0x3e4a, 0x6240, 0x623f, 0x623e, 0x487d, 0x3447, 0x3829,
+ 0x6246, 0x6243, 0x3f3f, 0x4c32, 0x6242, 0x6244, 0x6245, 0x6241,
+ 0x6247, 0x6248, 0x442f, 0x3463, 0x4365, 0x6249, 0x624a, 0x624d,
+ 0x3f67, 0x4644, 0x624e, 0x4b53, 0x624b, 0x624c, 0x6251, 0x6250,
+ 0x624f, 0x6253, 0x6252, 0x6254, 0x6256, 0x6255, 0x4a4d, 0x3d56,
+ 0x4e46, 0x6257, 0x4637, 0x6258, 0x6259, 0x625d, 0x625b, 0x625c,
+ 0x625a, 0x625e, 0x625f, 0x6260, 0x6261, 0x4c37, 0x6262, 0x4c70,
+ 0x6263, 0x434e, 0x476a, 0x366b, 0x433b, 0x6264, 0x363a, 0x4050,
+ 0x6265, 0x3a3d, 0x6266, 0x6267, 0x3826, 0x3a55, 0x6269, 0x4556,
+ 0x3a56, 0x354e, 0x4b24, 0x474b, 0x4557, 0x395c, 0x626b, 0x3e4b,
+ 0x4e32, 0x3945, 0x3827, 0x4823, 0x626d, 0x626f, 0x386b, 0x626e,
+ 0x4476, 0x6271, 0x3337, 0x626c, 0x486a, 0x3130, 0x3a6c, 0x4f52,
+ 0x6270, 0x6272, 0x4a4b, 0x4059, 0x6274, 0x6275, 0x6273, 0x334e,
+ 0x627b, 0x627a, 0x3c27, 0x627c, 0x6277, 0x627d, 0x6278, 0x4858,
+ 0x6276, 0x6279, 0x6322, 0x6321, 0x4b61, 0x627e, 0x306b, 0x6324,
+ 0x6323, 0x3e4c, 0x6325, 0x4143, 0x6327, 0x6326, 0x6328, 0x6268,
+ 0x626a, 0x632a, 0x6329, 0x3c28, 0x4e69, 0x3c52, 0x632b, 0x3737,
+ 0x3540, 0x3527, 0x3b63, 0x4d34, 0x6331, 0x6330, 0x4144, 0x632d,
+ 0x632f, 0x3d4b, 0x3f40, 0x632e, 0x632c, 0x472a, 0x3e4d, 0x493c,
+ 0x3a57, 0x4578, 0x6332, 0x6333, 0x6349, 0x3658, 0x4f3d, 0x4135,
+ 0x6334, 0x3252, 0x4477, 0x4a21, 0x6335, 0x357a, 0x6336, 0x6338,
+ 0x6339, 0x4729, 0x633a, 0x633b, 0x633c, 0x3659, 0x3253, 0x4645,
+ 0x3d28, 0x3b64, 0x633d, 0x3d29, 0x324a, 0x4943, 0x633e, 0x486b,
+ 0x4145, 0x6341, 0x6342, 0x4769, 0x3f41, 0x633f, 0x4361, 0x6340,
+ 0x3e4e, 0x305c, 0x3529, 0x6343, 0x4478, 0x6344, 0x4047, 0x4c2d,
+ 0x4923, 0x6345, 0x6346, 0x4355, 0x4e47, 0x6348, 0x6347, 0x3c6f,
+ 0x634a, 0x3070, 0x634d, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
+ 0x3972, 0x4a66, 0x634e, 0x4b54, 0x6350, 0x4051, 0x314f, 0x323a,
+ 0x302c, 0x634f, 0x6351, 0x6352, 0x3e77, 0x6353, 0x334f, 0x6355,
+ 0x376a, 0x3566, 0x6356, 0x3675, 0x6357, 0x407c, 0x464d, 0x4060,
+ 0x3a75, 0x6358, 0x4362, 0x416b, 0x635a, 0x635c, 0x6359, 0x635b,
+ 0x3722, 0x635d, 0x3726, 0x3567, 0x4d52, 0x635f, 0x6360, 0x312e,
+ 0x6363, 0x3376, 0x6362, 0x6361, 0x6365, 0x635e, 0x6366, 0x4e29,
+ 0x6367, 0x6368, 0x5474, 0x636a, 0x6369, 0x636b, 0x636c, 0x4e35,
+ 0x636d, 0x706f, 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x4638, 0x6370,
+ 0x4328, 0x6371, 0x433c, 0x6372, 0x3625, 0x513f, 0x435d, 0x3c33,
+ 0x3448, 0x6373, 0x6422, 0x6376, 0x3568, 0x6375, 0x6424, 0x6374,
+ 0x3e50, 0x6378, 0x6379, 0x452b, 0x637a, 0x335e, 0x3f5a, 0x4964,
+ 0x637c, 0x4268, 0x6377, 0x637b, 0x637d, 0x3a7b, 0x6426, 0x492e,
+ 0x4826, 0x4579, 0x365a, 0x6425, 0x6423, 0x4835, 0x637e, 0x435e,
+ 0x457b, 0x457a, 0x3a76, 0x6438, 0x6428, 0x642a, 0x642d, 0x642e,
+ 0x642b, 0x642c, 0x6429, 0x6427, 0x6421, 0x4a4f, 0x3255, 0x6435,
+ 0x6432, 0x6437, 0x6436, 0x4773, 0x4c27, 0x3b3b, 0x6430, 0x6439,
+ 0x6434, 0x6433, 0x642f, 0x6431, 0x3449, 0x433d, 0x407d, 0x4822,
+ 0x643e, 0x4824, 0x4061, 0x643b, 0x484f, 0x643f, 0x4a53, 0x435b,
+ 0x643a, 0x643c, 0x643d, 0x6440, 0x3c44, 0x4646, 0x6445, 0x6444,
+ 0x6441, 0x4f36, 0x644a, 0x644e, 0x644b, 0x6447, 0x6448, 0x644d,
+ 0x6442, 0x5255, 0x6449, 0x6443, 0x644c, 0x6452, 0x344a, 0x644f,
+ 0x6450, 0x6451, 0x6454, 0x6453, 0x4876, 0x6455, 0x4e7c, 0x4a6d,
+ 0x645a, 0x6457, 0x6456, 0x4052, 0x6459, 0x645b, 0x6458, 0x645f,
+ 0x645c, 0x645d, 0x6446, 0x645e, 0x6460, 0x6461, 0x4a46, 0x6462,
+ 0x4c62, 0x364e, 0x3729, 0x6463, 0x4a34, 0x3f68, 0x4c30, 0x6464,
+ 0x4e33, 0x4774, 0x4146, 0x4734, 0x3d4d, 0x3040, 0x6469, 0x6467,
+ 0x6465, 0x3421, 0x3e51, 0x646a, 0x6468, 0x6466, 0x646e, 0x646d,
+ 0x646c, 0x646b, 0x646f, 0x6470, 0x403a, 0x6471, 0x6473, 0x6472,
+ 0x3852, 0x4138, 0x6475, 0x457c, 0x6474, 0x6476, 0x4a35, 0x416c,
+ 0x3947, 0x6477, 0x4e48, 0x6479, 0x647a, 0x647b, 0x647c, 0x3b65,
+ 0x647d, 0x374f, 0x356a, 0x352a, 0x6521, 0x4c73, 0x3948, 0x647e,
+ 0x6524, 0x4c66, 0x473c, 0x4933, 0x3d63, 0x6523, 0x3c53, 0x3949,
+ 0x3b66, 0x3569, 0x4a36, 0x6522, 0x4147, 0x4b42, 0x3a77, 0x3b67,
+ 0x445d, 0x6527, 0x4e5f, 0x3a59, 0x6528, 0x3f42, 0x652a, 0x3e52,
+ 0x3a30, 0x6529, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x6526,
+ 0x3750, 0x652e, 0x6532, 0x376b, 0x652d, 0x6536, 0x394a, 0x4d6d,
+ 0x303c, 0x6533, 0x356b, 0x6530, 0x6531, 0x457d, 0x652f, 0x652c,
+ 0x3328, 0x4064, 0x3828, 0x6538, 0x6535, 0x6537, 0x6534, 0x3751,
+ 0x4233, 0x6539, 0x416e, 0x6546, 0x6542, 0x653c, 0x6540, 0x3c7a,
+ 0x305d, 0x653b, 0x6543, 0x6547, 0x394b, 0x4c56, 0x4456, 0x653d,
+ 0x6545, 0x653a, 0x433e, 0x653f, 0x303d, 0x4c4a, 0x653e, 0x365b,
+ 0x486c, 0x416d, 0x4e50, 0x3d6f, 0x656e, 0x6548, 0x407e, 0x6544,
+ 0x6549, 0x654b, 0x4479, 0x654e, 0x654a, 0x4a54, 0x344b, 0x4c4b,
+ 0x305e, 0x654d, 0x4e7d, 0x654c, 0x316f, 0x466c, 0x654f, 0x6556,
+ 0x6550, 0x6557, 0x6553, 0x477b, 0x3c4a, 0x6555, 0x6552, 0x6558,
+ 0x6551, 0x3d44, 0x4b25, 0x3d4c, 0x6554, 0x6560, 0x655c, 0x655f,
+ 0x655d, 0x6561, 0x655b, 0x6541, 0x4053, 0x484b, 0x655e, 0x6559,
+ 0x4121, 0x3752, 0x3d2b, 0x3f25, 0x4136, 0x6564, 0x6566, 0x6567,
+ 0x6563, 0x6565, 0x655a, 0x6562, 0x656a, 0x6569, 0x4b7a, 0x372b,
+ 0x6568, 0x656c, 0x656b, 0x656f, 0x6571, 0x3b3c, 0x656d, 0x6572,
+ 0x6573, 0x6574, 0x657a, 0x453b, 0x6576, 0x6575, 0x6577, 0x6578,
+ 0x6579, 0x657b, 0x657c, 0x344c, 0x657d, 0x657e, 0x6621, 0x6622,
+ 0x6623, 0x6624, 0x6625, 0x6626, 0x6628, 0x6627, 0x6629, 0x662a,
+ 0x662b, 0x662e, 0x662c, 0x662d, 0x3a61, 0x3753, 0x4356, 0x4833,
+ 0x3d70, 0x474d, 0x486d, 0x662f, 0x586d, 0x6630, 0x6632, 0x4d65,
+ 0x6631, 0x6634, 0x6633, 0x4d53, 0x6635, 0x487e, 0x6636, 0x6639,
+ 0x6638, 0x6637, 0x663a, 0x3732, 0x4122, 0x3541, 0x663e, 0x663b,
+ 0x663c, 0x663f, 0x6640, 0x663d, 0x3129, 0x3227, 0x6642, 0x6643,
+ 0x6644, 0x4d62, 0x3d2c, 0x6646, 0x6645, 0x3f69, 0x6647, 0x6648,
+ 0x6649, 0x3465, 0x344d, 0x664a, 0x664b, 0x4b5d, 0x4d63, 0x4d54,
+ 0x4f37, 0x394d, 0x664e, 0x3c54, 0x664d, 0x664f, 0x3c29, 0x4251,
+ 0x6650, 0x394c, 0x4c57, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655,
+ 0x3c2a, 0x4c6d, 0x6657, 0x433f, 0x6656, 0x6659, 0x6658, 0x665a,
+ 0x403b, 0x665b, 0x665c, 0x4a39, 0x665d, 0x416f, 0x665e, 0x665f,
+ 0x4e7e, 0x6662, 0x6661, 0x6660, 0x4430, 0x6663, 0x3f26, 0x6664,
+ 0x6665, 0x4f38, 0x6666, 0x6667, 0x6669, 0x6668, 0x4825, 0x4679,
+ 0x4f3e, 0x4829, 0x666b, 0x3e53, 0x492a, 0x666c, 0x666a, 0x344e,
+ 0x3854, 0x3b68, 0x486e, 0x382a, 0x4b43, 0x666f, 0x666d, 0x394e,
+ 0x394f, 0x3069, 0x3a68, 0x4759, 0x305f, 0x6674, 0x4340, 0x4758,
+ 0x425b, 0x6676, 0x6672, 0x6675, 0x6670, 0x6673, 0x4b26, 0x3855,
+ 0x307d, 0x6671, 0x6678, 0x6679, 0x4639, 0x363b, 0x6726, 0x473d,
+ 0x3b69, 0x363c, 0x4048, 0x4f46, 0x4c2e, 0x6677, 0x4054, 0x3553,
+ 0x667a, 0x667c, 0x667b, 0x667d, 0x4326, 0x473e, 0x4431, 0x6723,
+ 0x6722, 0x667e, 0x3f55, 0x4965, 0x6725, 0x6724, 0x3950, 0x4f53,
+ 0x6735, 0x6729, 0x672a, 0x3c70, 0x6728, 0x3978, 0x6727, 0x672b,
+ 0x4432, 0x4a22, 0x4123, 0x425c, 0x672f, 0x6730, 0x672c, 0x672d,
+ 0x672e, 0x3951, 0x6736, 0x6732, 0x4966, 0x4b6c, 0x4928, 0x6731,
+ 0x6734, 0x6733, 0x4b44, 0x6737, 0x6738, 0x4137, 0x6739, 0x673b,
+ 0x673f, 0x673c, 0x673a, 0x473f, 0x673d, 0x673e, 0x3232, 0x6745,
+ 0x6740, 0x6741, 0x6742, 0x4221, 0x6744, 0x6743, 0x6746, 0x6747,
+ 0x6748, 0x3f43, 0x3269, 0x6749, 0x4e57, 0x3c2b, 0x3d2d, 0x3b6a,
+ 0x4357, 0x674a, 0x674b, 0x3131, 0x674c, 0x674d, 0x674e, 0x674f,
+ 0x6750, 0x363d, 0x5a2a, 0x6751, 0x4065, 0x6752, 0x3c4b, 0x6753,
+ 0x5030, 0x6754, 0x4a5e, 0x345c, 0x4124, 0x3d58, 0x4971, 0x3d2e,
+ 0x6755, 0x3952, 0x6756, 0x484c, 0x6764, 0x6758, 0x4249, 0x4775,
+ 0x383f, 0x6757, 0x4125, 0x6759, 0x447a, 0x675b, 0x675a, 0x675d,
+ 0x675c, 0x675e, 0x6760, 0x675f, 0x344f, 0x6761, 0x6762, 0x6763,
+ 0x3a31, 0x4e49, 0x6765, 0x3f27, 0x3170, 0x6766, 0x6767, 0x6768,
+ 0x3072, 0x6769, 0x676a, 0x4967, 0x3c47, 0x676c, 0x3329, 0x3032,
+ 0x676b, 0x676e, 0x474e, 0x3f44, 0x3256, 0x4b27, 0x375d, 0x365c,
+ 0x676d, 0x326a, 0x3423, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x4944,
+ 0x677e, 0x3257, 0x677c, 0x677a, 0x6771, 0x676f, 0x6770, 0x3c63,
+ 0x366c, 0x4377, 0x4651, 0x3151, 0x6774, 0x6773, 0x6779, 0x6775,
+ 0x6778, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x677d, 0x3754,
+ 0x6823, 0x682c, 0x682d, 0x302b, 0x6834, 0x3071, 0x682b, 0x682a,
+ 0x6825, 0x6824, 0x6822, 0x6821, 0x4363, 0x427b, 0x6827, 0x6826,
+ 0x6829, 0x4170, 0x3755, 0x3141, 0x6828, 0x3953, 0x4171, 0x683a,
+ 0x683b, 0x3259, 0x322e, 0x6838, 0x682e, 0x6836, 0x683d, 0x6837,
+ 0x6835, 0x6776, 0x6833, 0x682f, 0x3450, 0x6831, 0x683c, 0x6832,
+ 0x683e, 0x6830, 0x477c, 0x4d69, 0x6839, 0x684f, 0x6847, 0x3f7b,
+ 0x3546, 0x365d, 0x6842, 0x325b, 0x3e54, 0x6845, 0x3a5a, 0x4551,
+ 0x684a, 0x4a6e, 0x6841, 0x325a, 0x3856, 0x4929, 0x684b, 0x683f,
+ 0x6848, 0x6852, 0x6843, 0x6844, 0x463a, 0x6849, 0x6846, 0x4b28,
+ 0x684c, 0x3060, 0x6840, 0x684e, 0x684d, 0x476b, 0x6854, 0x685f,
+ 0x337e, 0x6862, 0x6850, 0x6855, 0x4d6e, 0x685e, 0x4d55, 0x4e2a,
+ 0x4378, 0x336b, 0x4972, 0x6864, 0x4621, 0x3031, 0x685d, 0x6859,
+ 0x4172, 0x6853, 0x685b, 0x6860, 0x472c, 0x302a, 0x6858, 0x6861,
+ 0x4978, 0x685c, 0x6857, 0x3e55, 0x3d2f, 0x3c2c, 0x4c58, 0x4947,
+ 0x6867, 0x6870, 0x685a, 0x3377, 0x3e78, 0x6865, 0x686a, 0x4173,
+ 0x6866, 0x686d, 0x435f, 0x686e, 0x4d56, 0x6863, 0x3338, 0x6869,
+ 0x686c, 0x4c2c, 0x686f, 0x6868, 0x686b, 0x4b29, 0x4f21, 0x6873,
+ 0x687a, 0x6872, 0x3c43, 0x6851, 0x4a4e, 0x4c22, 0x6879, 0x6878,
+ 0x6874, 0x6875, 0x3136, 0x6877, 0x6871, 0x4455, 0x6876, 0x307e,
+ 0x4222, 0x4a43, 0x687b, 0x6921, 0x4859, 0x687e, 0x3e56, 0x3c49,
+ 0x6923, 0x363e, 0x6924, 0x4979, 0x687d, 0x6856, 0x687c, 0x4f4f,
+ 0x4622, 0x4973, 0x692b, 0x6931, 0x6932, 0x6925, 0x4776, 0x692f,
+ 0x6927, 0x6929, 0x6933, 0x6928, 0x692c, 0x3172, 0x4665, 0x692d,
+ 0x6930, 0x6926, 0x4126, 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74,
+ 0x4c79, 0x3d72, 0x6937, 0x6935, 0x4f4e, 0x6934, 0x4d75, 0x6936,
+ 0x6938, 0x6939, 0x693c, 0x693a, 0x4623, 0x693b, 0x484d, 0x692e,
+ 0x3d73, 0x693d, 0x6942, 0x4174, 0x6941, 0x6922, 0x6943, 0x4149,
+ 0x693e, 0x6940, 0x693f, 0x5d31, 0x5d22, 0x6945, 0x6944, 0x4d76,
+ 0x623c, 0x6946, 0x6947, 0x6948, 0x3857, 0x3554, 0x694a, 0x515d,
+ 0x3575, 0x4e3a, 0x3673, 0x694b, 0x694c, 0x436e, 0x694d, 0x467a,
+ 0x303a, 0x3263, 0x6952, 0x6953, 0x694e, 0x3b3d, 0x694f, 0x4742,
+ 0x6950, 0x6951, 0x695b, 0x6955, 0x6958, 0x6954, 0x6956, 0x6957,
+ 0x3c58, 0x6959, 0x4341, 0x3756, 0x3342, 0x695c, 0x333f, 0x6961,
+ 0x695d, 0x6960, 0x483a, 0x695e, 0x695f, 0x4948, 0x485a, 0x6962,
+ 0x427d, 0x696c, 0x6968, 0x326b, 0x6966, 0x4b2a, 0x6967, 0x6964,
+ 0x6965, 0x696a, 0x696d, 0x696b, 0x6969, 0x6963, 0x4358, 0x6974,
+ 0x4c2a, 0x6972, 0x6973, 0x696e, 0x6970, 0x6971, 0x696f, 0x4066,
+ 0x4f39, 0x6978, 0x6979, 0x6a21, 0x3f2a, 0x697b, 0x697e, 0x6976,
+ 0x6975, 0x6a22, 0x325c, 0x697c, 0x6a23, 0x697d, 0x697a, 0x4433,
+ 0x6977, 0x4768, 0x6a27, 0x4d3b, 0x6a26, 0x6a25, 0x6a2e, 0x6a28,
+ 0x6a30, 0x4d66, 0x6a33, 0x6a2a, 0x6a2b, 0x6a2f, 0x6a32, 0x6a31,
+ 0x6a29, 0x6a2c, 0x6a3d, 0x6a36, 0x6a34, 0x6a35, 0x6a3a, 0x6a3b,
+ 0x332a, 0x3542, 0x6a39, 0x6a24, 0x6a38, 0x6a3c, 0x6a37, 0x6a3e,
+ 0x6a40, 0x6a3f, 0x6a42, 0x6a41, 0x695a, 0x6a46, 0x6a43, 0x6a44,
+ 0x6a45, 0x6a47, 0x376c, 0x6a49, 0x6a48, 0x3d30, 0x3954, 0x5e27,
+ 0x6a4a, 0x3d51, 0x3339, 0x6a4b, 0x3152, 0x3e57, 0x6a4c, 0x3955,
+ 0x6a4d, 0x3061, 0x493d, 0x6a4e, 0x3f6a, 0x6a55, 0x6a52, 0x436f,
+ 0x6a53, 0x6a50, 0x365e, 0x6a4f, 0x6a56, 0x3736, 0x425e, 0x6a5c,
+ 0x6a58, 0x4235, 0x6a57, 0x6a5a, 0x6a51, 0x6a5b, 0x6a5d, 0x486f,
+ 0x6a59, 0x6a5e, 0x6a60, 0x3853, 0x6a54, 0x3041, 0x6a5f, 0x3a5b,
+ 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x4e22, 0x6a63, 0x4d35, 0x6a64,
+ 0x6a65, 0x4a64, 0x6a66, 0x3a40, 0x4e23, 0x6a6b, 0x6a6c, 0x3e58,
+ 0x6a6a, 0x4d67, 0x6a67, 0x6a69, 0x403d, 0x3f7e, 0x6a68, 0x6a6d,
+ 0x4a23, 0x6a6f, 0x6a6e, 0x336c, 0x4b2b, 0x6a70, 0x6a7c, 0x6a72,
+ 0x6a73, 0x6a74, 0x6a75, 0x6a79, 0x6a7a, 0x6a78, 0x6a76, 0x6a71,
+ 0x6a77, 0x6a7b, 0x7037, 0x3228, 0x6a7e, 0x365f, 0x6a7d, 0x6b22,
+ 0x6b21, 0x6b24, 0x6b23, 0x6b25, 0x3d31, 0x6b26, 0x6b27, 0x6b28,
+ 0x403e, 0x4d57, 0x6b29, 0x4a24, 0x4746, 0x6b2a, 0x6b2b, 0x382b,
+ 0x352c, 0x6b2c, 0x3b6b, 0x4741, 0x6b2d, 0x3350, 0x6b2e, 0x6b30,
+ 0x4d77, 0x6b2f, 0x3f46, 0x6b31, 0x6b32, 0x6b33, 0x3451, 0x6b34,
+ 0x6b35, 0x6b36, 0x6b37, 0x3351, 0x6b38, 0x6b39, 0x6b3a, 0x3272,
+ 0x3f28, 0x6b3b, 0x6b3c, 0x6b3d, 0x3840, 0x447b, 0x6b3e, 0x3757,
+ 0x3f56, 0x6b41, 0x4624, 0x6b40, 0x3731, 0x6b3f, 0x4277, 0x352d,
+ 0x6b42, 0x6b43, 0x3e59, 0x376d, 0x6b44, 0x4b2c, 0x405f, 0x3576,
+ 0x4c75, 0x414a, 0x6b45, 0x3f47, 0x4370, 0x3e5a, 0x6b46, 0x6b49,
+ 0x6b4a, 0x3a3e, 0x4242, 0x6b48, 0x3e5b, 0x493e, 0x6b47, 0x3b6c,
+ 0x3153, 0x6b4e, 0x3758, 0x3b6e, 0x3b6d, 0x4f4d, 0x6b4d, 0x6b4c,
+ 0x4127, 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x6b4b, 0x6b50, 0x6b51,
+ 0x6b4f, 0x3858, 0x4d40, 0x3b6f, 0x4727, 0x6b54, 0x4040, 0x4342,
+ 0x4d36, 0x6b57, 0x386c, 0x403f, 0x6b53, 0x6b58, 0x386d, 0x6b55,
+ 0x6b56, 0x6b52, 0x4062, 0x4649, 0x432f, 0x325d, 0x4870, 0x3543,
+ 0x4434, 0x6b5b, 0x6b59, 0x434c, 0x4041, 0x3452, 0x6b5a, 0x3f5b,
+ 0x4e4a, 0x4f40, 0x6b5c, 0x6b67, 0x4435, 0x6b66, 0x6b63, 0x6b6b,
+ 0x6b64, 0x6b60, 0x447c, 0x6b5f, 0x6b5d, 0x4d21, 0x3b70, 0x6b61,
+ 0x6b5e, 0x6b65, 0x3d74, 0x3841, 0x427a, 0x4b45, 0x315a, 0x3062,
+ 0x4625, 0x6b69, 0x6b68, 0x4666, 0x6b6d, 0x6b62, 0x6b6c, 0x6b6e,
+ 0x382c, 0x6b6a, 0x3956, 0x3c55, 0x6b6f, 0x4d58, 0x6b72, 0x6b75,
+ 0x6b73, 0x4935, 0x6b70, 0x3660, 0x6b74, 0x6b76, 0x6b7a, 0x6b77,
+ 0x6b79, 0x6b78, 0x6b7b, 0x3c31, 0x6b7d, 0x6b7c, 0x4968, 0x6c21,
+ 0x3759, 0x6b7e, 0x6c22, 0x6c23, 0x3544, 0x6641, 0x3e79, 0x6c24,
+ 0x386e, 0x6c25, 0x6c26, 0x3b3e, 0x5a4e, 0x6c27, 0x6c28, 0x3d32,
+ 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x432b, 0x6c2e, 0x6c30,
+ 0x6c2f, 0x4626, 0x6c31, 0x4b2d, 0x6c32, 0x6c33, 0x6c34, 0x6c35,
+ 0x465a, 0x3e5d, 0x6c36, 0x396b, 0x502e, 0x6c37, 0x6c38, 0x493f,
+ 0x6c39, 0x6c41, 0x6c3a, 0x6c3c, 0x6c3b, 0x6c3d, 0x4b46, 0x6c3e,
+ 0x6c3f, 0x6c40, 0x6c42, 0x332d, 0x4467, 0x4969, 0x3a62, 0x3957,
+ 0x494f, 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49,
+ 0x4379, 0x4c63, 0x6c47, 0x6c48, 0x352e, 0x6c4a, 0x4763, 0x425f,
+ 0x4871, 0x453d, 0x6c46, 0x4b47, 0x326c, 0x6c4c, 0x4f28, 0x4442,
+ 0x4f45, 0x3b71, 0x6c4b, 0x4231, 0x6c5c, 0x4128, 0x4678, 0x4950,
+ 0x6c4f, 0x3b3f, 0x3b72, 0x3e5e, 0x4765, 0x382d, 0x6c4e, 0x6c4d,
+ 0x496a, 0x3c41, 0x4552, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x6c53,
+ 0x6c54, 0x6c56, 0x4223, 0x6c55, 0x3466, 0x6c58, 0x6c57, 0x6c59,
+ 0x6c5b, 0x6c5d, 0x6c5e, 0x4056, 0x3c4f, 0x6c5f, 0x3352, 0x6c60,
+ 0x4176, 0x6c61, 0x6c62, 0x496b, 0x352f, 0x6c63, 0x4436, 0x315b,
+ 0x6c64, 0x3c71, 0x3f76, 0x422d, 0x6c67, 0x6c66, 0x6c65, 0x6c6d,
+ 0x6c6b, 0x6c68, 0x6c6a, 0x6c69, 0x6c6c, 0x3577, 0x6c70, 0x4057,
+ 0x6c71, 0x3859, 0x6c6e, 0x6c6f, 0x4f29, 0x4437, 0x4129, 0x6c72,
+ 0x6c75, 0x6c73, 0x6c74, 0x4d59, 0x4627, 0x6c78, 0x6c76, 0x6c77,
+ 0x6c79, 0x6d29, 0x6c7c, 0x6c7d, 0x6c7b, 0x6c7a, 0x447d, 0x6d21,
+ 0x6d25, 0x6d22, 0x6c7e, 0x6d23, 0x6d24, 0x6d2b, 0x6d26, 0x4058,
+ 0x6d28, 0x6d2a, 0x6d27, 0x6d2d, 0x3d33, 0x6d2c, 0x6d2e, 0x6d2f,
+ 0x6d32, 0x6d31, 0x6d30, 0x6d34, 0x6d33, 0x4c76, 0x6d36, 0x6d35,
+ 0x6d37, 0x6d38, 0x6d3a, 0x6d39, 0x3f48, 0x6d3b, 0x366d, 0x6d3c,
+ 0x6d3e, 0x6d3f, 0x6d40, 0x6d3d, 0x6d41, 0x3c56, 0x6d42, 0x3530,
+ 0x3733, 0x382e, 0x6d43, 0x4670, 0x453e, 0x6d44, 0x6d47, 0x3c34,
+ 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x3353, 0x6d4a, 0x3a5c, 0x6d49,
+ 0x6d52, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x6d4d, 0x6d51, 0x6d4f,
+ 0x3531, 0x6d50, 0x6d53, 0x475a, 0x4e58, 0x3d34, 0x6d54, 0x4d22,
+ 0x6d56, 0x6d55, 0x6d59, 0x4d41, 0x6d58, 0x336d, 0x6d57, 0x6d5c,
+ 0x6d5b, 0x6d5a, 0x4532, 0x6d5d, 0x6d5e, 0x6d5f, 0x396c, 0x3725,
+ 0x6d60, 0x6d61, 0x6d62, 0x3f49, 0x6d63, 0x3c2d, 0x6d64, 0x6d65,
+ 0x5221, 0x517e, 0x6d66, 0x6570, 0x6d67, 0x4324, 0x3f2b, 0x4740,
+ 0x6d68, 0x4a55, 0x4454, 0x397e, 0x4329, 0x312a, 0x4b78, 0x3f57,
+ 0x375e, 0x3661, 0x4a56, 0x6d69, 0x6d6b, 0x6d6a, 0x3260, 0x4676,
+ 0x6d6c, 0x4777, 0x4533, 0x6d6d, 0x3d52, 0x6d6f, 0x4c42, 0x6d7e,
+ 0x6d71, 0x6d72, 0x4449, 0x4260, 0x4177, 0x4628, 0x6d70, 0x3555,
+ 0x6d79, 0x6d76, 0x6e25, 0x4629, 0x4360, 0x6d73, 0x447e, 0x4553,
+ 0x6d74, 0x6d78, 0x3f60, 0x4767, 0x444c, 0x4042, 0x6d77, 0x422e,
+ 0x4224, 0x6d75, 0x3029, 0x4f22, 0x6d7a, 0x4261, 0x3d35, 0x3f4a,
+ 0x6d7c, 0x6d7b, 0x306f, 0x6d7d, 0x492f, 0x6e27, 0x465b, 0x3f6b,
+ 0x4359, 0x3678, 0x6e26, 0x4d37, 0x313f, 0x4a57, 0x3261, 0x6e21,
+ 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x6e29,
+ 0x7423, 0x423d, 0x6e2a, 0x3173, 0x414c, 0x382f, 0x4d5a, 0x6e2b,
+ 0x452c, 0x4178, 0x3c57, 0x6e2c, 0x6e2f, 0x3d65, 0x6e2d, 0x412b,
+ 0x412a, 0x3064, 0x4e4b, 0x6e31, 0x4872, 0x6e33, 0x6e32, 0x6e30,
+ 0x6364, 0x3454, 0x6d6e, 0x6e35, 0x6e34, 0x6e36, 0x4d38, 0x4661,
+ 0x4b2e, 0x6e37, 0x3c59, 0x6e38, 0x6e39, 0x6e3a, 0x4521, 0x306a,
+ 0x3959, 0x4f3a, 0x6e3e, 0x3734, 0x6e3b, 0x6e3c, 0x4974, 0x3354,
+ 0x4d39, 0x363f, 0x4554, 0x6e3f, 0x6e40, 0x6e41, 0x4522, 0x6e43,
+ 0x6e42, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x3c72,
+ 0x3f6c, 0x6e45, 0x6e46, 0x3f5d, 0x6e47, 0x6e48, 0x6e49, 0x4d6f,
+ 0x3d37, 0x6e4b, 0x6e4a, 0x395a, 0x3973, 0x3b40, 0x6e4e, 0x3d66,
+ 0x6e4d, 0x6e4c, 0x4269, 0x386f, 0x4043, 0x4830, 0x3d39, 0x6e4f,
+ 0x3e5f, 0x6e52, 0x6e50, 0x6e51, 0x6e54, 0x6e53, 0x3e7a, 0x6e55,
+ 0x6e56, 0x6e57, 0x4850, 0x3a53, 0x3c61, 0x6e58, 0x6e59, 0x4e24,
+ 0x3d45, 0x4c6e, 0x4e4c, 0x6e5a, 0x3662, 0x6e5b, 0x4523, 0x6e5e,
+ 0x3378, 0x3f4b, 0x6e5c, 0x6e5d, 0x4460, 0x4b55, 0x367c, 0x6e60,
+ 0x6e61, 0x6e5f, 0x6e63, 0x465f, 0x3343, 0x6e67, 0x6e64, 0x6e66,
+ 0x6e62, 0x6f4f, 0x6e65, 0x4e6b, 0x385a, 0x6e6f, 0x4534, 0x6e6a,
+ 0x6e6d, 0x6e6b, 0x6e70, 0x6e71, 0x6e69, 0x6e76, 0x3174, 0x6e68,
+ 0x482d, 0x6e6c, 0x3e60, 0x395b, 0x4b48, 0x3664, 0x3d46, 0x463c,
+ 0x412d, 0x6e74, 0x6e6e, 0x6e73, 0x4c43, 0x4438, 0x6e75, 0x6e72,
+ 0x412c, 0x6e79, 0x6e78, 0x6e77, 0x4b2f, 0x3d7b, 0x6e7a, 0x4a5f,
+ 0x3154, 0x4946, 0x4372, 0x3578, 0x6e7c, 0x395d, 0x3b2c, 0x6e7b,
+ 0x3f6d, 0x3f6e, 0x6f21, 0x6f23, 0x3e7b, 0x6f22, 0x6f24, 0x3653,
+ 0x4945, 0x3c62, 0x4f23, 0x6e7e, 0x3a78, 0x4f3f, 0x6f26, 0x6f25,
+ 0x6f27, 0x6e7d, 0x4669, 0x4555, 0x4457, 0x6f2c, 0x4343, 0x6f28,
+ 0x6f29, 0x372d, 0x6f2b, 0x3830, 0x6f2a, 0x3e61, 0x3379, 0x6f30,
+ 0x3a3f, 0x4179, 0x444a, 0x333b, 0x6f2e, 0x6f2f, 0x4443, 0x6f2d,
+ 0x6f31, 0x6f37, 0x6f3a, 0x6f39, 0x452d, 0x6f32, 0x6f33, 0x6f36,
+ 0x6f38, 0x3640, 0x6f3b, 0x6f35, 0x6f34, 0x6f3f, 0x6f40, 0x6f41,
+ 0x6f3e, 0x6f3d, 0x3e62, 0x462a, 0x6f3c, 0x6f45, 0x6f43, 0x6f44,
+ 0x6f42, 0x4278, 0x6f46, 0x6f47, 0x6f49, 0x3455, 0x6f48, 0x4c7a,
+ 0x6f54, 0x6f4a, 0x6f4d, 0x6f4b, 0x6f4c, 0x6f4e, 0x6f50, 0x6f51,
+ 0x6f52, 0x6f55, 0x6f53, 0x6f56, 0x6f58, 0x6f57, 0x4439, 0x4c67,
+ 0x6f59, 0x412e, 0x6f5a, 0x4a44, 0x6f5b, 0x332b, 0x313c, 0x3457,
+ 0x3456, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, 0x6f60, 0x3458, 0x3355,
+ 0x395e, 0x4836, 0x6f62, 0x6f61, 0x6f63, 0x315c, 0x6f66, 0x6f65,
+ 0x6f64, 0x6f67, 0x6f6a, 0x3047, 0x6f68, 0x6f6c, 0x6f6b, 0x6f6e,
+ 0x6f6d, 0x6f6f, 0x462e, 0x6f70, 0x6f71, 0x6f73, 0x6f72, 0x496c,
+ 0x6f74, 0x6f75, 0x3a65, 0x6f76, 0x6f77, 0x4b49, 0x414b, 0x3024,
+ 0x424b, 0x6f78, 0x496d, 0x6f7b, 0x6f79, 0x395f, 0x6f7a, 0x3842,
+ 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, 0x3121, 0x3f58, 0x3d7c,
+ 0x3459, 0x7023, 0x4766, 0x7025, 0x3122, 0x7024, 0x4444, 0x4e4d,
+ 0x462b, 0x6f7c, 0x4e26, 0x3831, 0x4d5b, 0x3679, 0x4e34, 0x3728,
+ 0x4262, 0x6721, 0x7026, 0x332c, 0x3f6f, 0x3356, 0x7028, 0x7029,
+ 0x7027, 0x3764, 0x3a5d, 0x3e63, 0x3123, 0x4e59, 0x702b, 0x6e2e,
+ 0x702a, 0x702e, 0x702c, 0x702d, 0x702f, 0x7030, 0x4e6c, 0x7031,
+ 0x7032, 0x4049, 0x483b, 0x3f7d, 0x3467, 0x4d3a, 0x326d, 0x3d38,
+ 0x385b, 0x7035, 0x7034, 0x3b73, 0x7036, 0x7033, 0x3b28, 0x703a,
+ 0x6a2d, 0x5256, 0x3f77, 0x7038, 0x4e25, 0x4671, 0x312b, 0x4063,
+ 0x3c36, 0x4a37, 0x3140, 0x4e6d, 0x4d6b, 0x703b, 0x4545, 0x3c7b,
+ 0x703c, 0x703d, 0x3f4c, 0x703e, 0x4e6e, 0x7039, 0x7040, 0x7042,
+ 0x7041, 0x703f, 0x7043, 0x7044, 0x417a, 0x3262, 0x7045, 0x4c38,
+ 0x7046, 0x7047, 0x4f2a, 0x5b31, 0x7048, 0x7049, 0x704a, 0x704e,
+ 0x704b, 0x704c, 0x704d, 0x704f, 0x4044, 0x4c77, 0x4045, 0x7050,
+ 0x4873, 0x7051, 0x7353, 0x4c4c, 0x7052, 0x7053, 0x7054, 0x3357,
+ 0x7056, 0x3f59, 0x7057, 0x3724, 0x7058, 0x705c, 0x705a, 0x705b,
+ 0x3373, 0x7059, 0x705d, 0x705e, 0x3048, 0x705f, 0x7060, 0x3e64,
+ 0x7061, 0x3547, 0x7064, 0x7063, 0x7062, 0x6b71, 0x4a5c, 0x7065,
+ 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x345a, 0x706b, 0x706c,
+ 0x4723, 0x706e, 0x323b, 0x7071, 0x7070, 0x3124, 0x3641, 0x4a47,
+ 0x443a, 0x3a22, 0x3960, 0x3d67, 0x3f5c, 0x7073, 0x7072, 0x4d42,
+ 0x3468, 0x4852, 0x465c, 0x3f7c, 0x4e4e, 0x375b, 0x7076, 0x7075,
+ 0x4b4b, 0x462c, 0x3150, 0x7077, 0x7074, 0x4951, 0x4d6a, 0x7078,
+ 0x7079, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, 0x3469, 0x3832,
+ 0x346a, 0x453f, 0x4e60, 0x385c, 0x707c, 0x707d, 0x707e, 0x7121,
+ 0x7123, 0x7122, 0x4977, 0x7124, 0x7125, 0x7126, 0x7127, 0x7129,
+ 0x7128, 0x712a, 0x4874, 0x664c, 0x3f29, 0x3532, 0x712b, 0x712c,
+ 0x522c, 0x5d3b, 0x4853, 0x307b, 0x303b, 0x3b74, 0x4b30, 0x3e7e,
+ 0x712d, 0x4c5f, 0x712e, 0x4d5c, 0x3142, 0x3b41, 0x712f, 0x326e,
+ 0x7130, 0x7131, 0x7133, 0x7134, 0x7136, 0x7132, 0x7135, 0x345b,
+ 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713d, 0x713c, 0x713f,
+ 0x7142, 0x713e, 0x7140, 0x7141, 0x7143, 0x3642, 0x3c73, 0x7144,
+ 0x7145, 0x3961, 0x7146, 0x333e, 0x474f, 0x7147, 0x7148, 0x435a,
+ 0x466b, 0x7149, 0x477d, 0x424c, 0x3158, 0x366e, 0x366f, 0x4373,
+ 0x714e, 0x3670, 0x326f, 0x714d, 0x714b, 0x714c, 0x714a, 0x7158,
+ 0x714f, 0x7150, 0x7151, 0x7152, 0x7154, 0x7153, 0x3d59, 0x7155,
+ 0x7157, 0x3533, 0x7156, 0x417b, 0x3833, 0x7159, 0x424d, 0x715a,
+ 0x462d, 0x715b, 0x7160, 0x715e, 0x715d, 0x715f, 0x715c, 0x7162,
+ 0x7161, 0x7164, 0x3643, 0x7163, 0x7165, 0x7166, 0x7168, 0x7167,
+ 0x7169, 0x716b, 0x716a, 0x397c, 0x716c, 0x716d, 0x333c, 0x716e,
+ 0x716f, 0x3f71, 0x7170, 0x7171, 0x7172, 0x7173, 0x3962, 0x7174,
+ 0x7175, 0x7176, 0x7177, 0x7178, 0x4831, 0x717a, 0x4926, 0x717b,
+ 0x7179, 0x717d, 0x717c, 0x717e, 0x7221, 0x7222, 0x7223, 0x7224,
+ 0x7225, 0x7226, 0x7227, 0x7228, 0x7229, 0x722a, 0x722b, 0x722c,
+ 0x722d, 0x722e, 0x5d35, 0x722f, 0x6478, 0x3534, 0x3321, 0x3a32,
+ 0x7231, 0x7230, 0x4c25, 0x7233, 0x7234, 0x7232, 0x7235, 0x4b62,
+ 0x7236, 0x357b, 0x4f25, 0x7237, 0x7239, 0x303e, 0x723a, 0x4a2b,
+ 0x7238, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, 0x4b6e, 0x3b2d,
+ 0x3a7a, 0x412f, 0x7240, 0x7243, 0x7241, 0x7244, 0x3871, 0x7242,
+ 0x7245, 0x7246, 0x7247, 0x724b, 0x3b2a, 0x4264, 0x724c, 0x7249,
+ 0x7248, 0x724a, 0x375f, 0x7250, 0x724f, 0x724e, 0x3033, 0x725a,
+ 0x7256, 0x7257, 0x7253, 0x7259, 0x7255, 0x3362, 0x4f4c, 0x7258,
+ 0x7254, 0x7252, 0x7251, 0x725c, 0x725f, 0x725e, 0x725d, 0x4949,
+ 0x725b, 0x3073, 0x7260, 0x7262, 0x336f, 0x724d, 0x3137, 0x7264,
+ 0x7263, 0x7261, 0x432d, 0x4b70, 0x4e5a, 0x7265, 0x7266, 0x7267,
+ 0x7268, 0x7269, 0x443b, 0x726a, 0x4837, 0x726f, 0x726b, 0x726c,
+ 0x4b31, 0x4c44, 0x4650, 0x7270, 0x7271, 0x463e, 0x726e, 0x726d,
+ 0x322a, 0x7279, 0x7278, 0x3175, 0x7276, 0x7275, 0x7273, 0x337b,
+ 0x7272, 0x3c32, 0x3229, 0x3963, 0x727c, 0x727b, 0x727a, 0x7277,
+ 0x727d, 0x727e, 0x7325, 0x7324, 0x7326, 0x312d, 0x7321, 0x7322,
+ 0x3974, 0x4c39, 0x7323, 0x4b32, 0x732b, 0x7327, 0x732c, 0x7329,
+ 0x7328, 0x375c, 0x732d, 0x732e, 0x732f, 0x732a, 0x7274, 0x7330,
+ 0x4461, 0x7334, 0x7335, 0x7333, 0x7332, 0x7338, 0x7331, 0x7336,
+ 0x7337, 0x733a, 0x7339, 0x733c, 0x733d, 0x733e, 0x4f49, 0x733b,
+ 0x426b, 0x3a6d, 0x733f, 0x7340, 0x7341, 0x7342, 0x7343, 0x3834,
+ 0x7344, 0x7345, 0x3c2f, 0x7346, 0x7347, 0x7348, 0x7349, 0x734c,
+ 0x734a, 0x4f3c, 0x734b, 0x4e6f, 0x734d, 0x4e5b, 0x734e, 0x477e,
+ 0x734f, 0x7351, 0x7352, 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677,
+ 0x5d60, 0x4b7b, 0x322b, 0x7354, 0x3550, 0x7355, 0x7356, 0x7357,
+ 0x3975, 0x7358, 0x6054, 0x4c5b, 0x4263, 0x7359, 0x735b, 0x735a,
+ 0x735c, 0x735d, 0x735e, 0x735f, 0x7360, 0x7361, 0x7362, 0x7363,
+ 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x4524, 0x385d, 0x736a,
+ 0x414d, 0x736b, 0x736c, 0x4921, 0x736d, 0x736e, 0x6337, 0x6c5a,
+ 0x706d, 0x736f, 0x7370, 0x7372, 0x7373, 0x7374, 0x4e70, 0x7371,
+ 0x7375, 0x7376, 0x7378, 0x7377, 0x737a, 0x737b, 0x7379, 0x4e36,
+ 0x737c, 0x737d, 0x6354, 0x737e, 0x212a, 0x2174, 0x2170, 0x2173,
+ 0x2175, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x2125, 0x213f,
+ 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
+ 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
+ 0x2177, 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, 0x214e, 0x214f, 0x2130, 0x2132, 0x212e,
+ 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, 0x2150, 0x2143, 0x2151, 0x2131, 0x216f,
+};
+
+static const Summary16 jisx0208_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x1000 }, { 1, 0x0000 }, { 1, 0x0000 },
+ { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x118c }, { 6, 0x0053 },
+ { 10, 0x0000 }, { 10, 0x0080 }, { 11, 0x0000 }, { 11, 0x0080 },
+};
+static const Summary16 jisx0208_uni2indx_page03[22] = {
+ /* 0x0300 */
+ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
+ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
+ { 12, 0x0000 }, { 12, 0xfffe }, { 27, 0x03fb }, { 36, 0xfffe },
+ { 51, 0x03fb }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 },
+ /* 0x0400 */
+ { 60, 0x0002 }, { 61, 0xffff }, { 77, 0xffff }, { 93, 0xffff },
+ { 109, 0xffff }, { 125, 0x0002 },
+};
+static const Summary16 jisx0208_uni2indx_page20[50] = {
+ /* 0x2000 */
+ { 126, 0x0000 }, { 126, 0x3361 }, { 133, 0x0063 }, { 137, 0x080d },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ /* 0x2100 */
+ { 141, 0x0008 }, { 142, 0x0000 }, { 142, 0x0800 }, { 143, 0x0000 },
+ { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 },
+ { 143, 0x0000 }, { 143, 0x000f }, { 147, 0x0000 }, { 147, 0x0000 },
+ { 147, 0x0000 }, { 147, 0x0014 }, { 149, 0x0000 }, { 149, 0x0000 },
+ /* 0x2200 */
+ { 149, 0x098d }, { 155, 0x6404 }, { 159, 0x1f81 }, { 166, 0x2030 },
+ { 169, 0x0000 }, { 169, 0x0004 }, { 170, 0x0cc3 }, { 176, 0x0000 },
+ { 176, 0x00cc }, { 180, 0x0000 }, { 180, 0x0020 }, { 181, 0x0000 },
+ { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 },
+ /* 0x2300 */
+ { 181, 0x0000 }, { 181, 0x0004 },
+};
+static const Summary16 jisx0208_uni2indx_page25[23] = {
+ /* 0x2500 */
+ { 182, 0x900f }, { 188, 0x3999 }, { 196, 0x9939 }, { 204, 0x9999 },
+ { 212, 0x0804 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 },
+ { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0003 }, { 216, 0x300c },
+ { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x8000 }, { 226, 0x0000 },
+ /* 0x2600 */
+ { 226, 0x0060 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 },
+ { 228, 0x0005 }, { 230, 0x0000 }, { 230, 0xa400 },
+};
+static const Summary16 jisx0208_uni2indx_page30[16] = {
+ /* 0x3000 */
+ { 233, 0xffef }, { 248, 0x103f }, { 255, 0x0000 }, { 255, 0x0000 },
+ { 255, 0xfffe }, { 270, 0xffff }, { 286, 0xffff }, { 302, 0xffff },
+ { 318, 0xffff }, { 334, 0x780f }, { 342, 0xfffe }, { 357, 0xffff },
+ { 373, 0xffff }, { 389, 0xffff }, { 405, 0xffff }, { 421, 0x787f },
+};
+static const Summary16 jisx0208_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 432, 0x6f8b }, { 442, 0x43f3 }, { 451, 0x2442 }, { 455, 0x9b46 },
+ { 463, 0xe82c }, { 470, 0xe3e0 }, { 478, 0x0004 }, { 479, 0x400a },
+ { 482, 0x5f65 }, { 492, 0xdb36 }, { 502, 0x7977 }, { 513, 0x0449 },
+ { 517, 0xecd7 }, { 528, 0xe3f0 }, { 537, 0x6038 }, { 542, 0x08c5 },
+ /* 0x4f00 */
+ { 547, 0xe602 }, { 553, 0x3403 }, { 558, 0x8000 }, { 559, 0x3551 },
+ { 566, 0xe0c8 }, { 572, 0x7eab }, { 583, 0x8200 }, { 585, 0x9869 },
+ { 592, 0xa948 }, { 598, 0x2942 }, { 603, 0xe803 }, { 609, 0x8060 },
+ { 612, 0x441c }, { 617, 0xad93 }, { 626, 0xc03a }, { 632, 0x4568 },
+ /* 0x5000 */
+ { 638, 0xaa60 }, { 644, 0x8656 }, { 651, 0x3f7a }, { 662, 0x0240 },
+ { 664, 0x8388 }, { 669, 0x1461 }, { 674, 0x1020 }, { 676, 0x2174 },
+ { 682, 0x2021 }, { 685, 0x0702 }, { 689, 0x3000 }, { 691, 0x40bc },
+ { 697, 0xa624 }, { 703, 0x4462 }, { 708, 0x60a8 }, { 713, 0x0a20 },
+ /* 0x5100 */
+ { 716, 0x0217 }, { 721, 0x8574 }, { 728, 0x0402 }, { 730, 0x9c84 },
+ { 736, 0x7bfb }, { 749, 0x1415 }, { 754, 0x7f24 }, { 763, 0x11e2 },
+ { 769, 0xb665 }, { 778, 0x02ef }, { 786, 0x1f75 }, { 796, 0x20ff },
+ { 805, 0x3a70 }, { 812, 0x3840 }, { 816, 0x26c3 }, { 823, 0x6763 },
+ /* 0x5200 */
+ { 832, 0x4dd9 }, { 841, 0x2092 }, { 845, 0x46b0 }, { 851, 0x0fc9 },
+ { 859, 0xbc98 }, { 867, 0x4850 }, { 871, 0x8638 }, { 877, 0xa03f },
+ { 885, 0x2388 }, { 890, 0x8816 }, { 895, 0x3e09 }, { 902, 0x5232 },
+ { 908, 0x22aa }, { 914, 0xe3a4 }, { 922, 0x00dd }, { 928, 0xc72c },
+ /* 0x5300 */
+ { 936, 0xa166 }, { 943, 0x26e1 }, { 950, 0x840b }, { 955, 0x8f0a },
+ { 962, 0x27eb }, { 972, 0x559e }, { 981, 0xc241 }, { 986, 0x89bb },
+ { 995, 0x0014 }, { 997, 0x8540 }, { 1001, 0x6361 }, { 1008, 0x0849 },
+ { 1012, 0x7f0c }, { 1021, 0x8ad0 }, { 1027, 0xff3e }, { 1040, 0x05cf },
+ /* 0x5400 */
+ { 1048, 0xff1a }, { 1059, 0xa803 }, { 1064, 0x7a41 }, { 1071, 0x7b40 },
+ { 1078, 0x4745 }, { 1085, 0x8002 }, { 1087, 0x0500 }, { 1089, 0x38eb },
+ { 1098, 0xd851 }, { 1105, 0x0005 }, { 1107, 0x9934 }, { 1114, 0x710c },
+ { 1120, 0x0397 }, { 1127, 0x0100 }, { 1128, 0x6366 }, { 1136, 0x2404 },
+ /* 0x5500 */
+ { 1139, 0x80d0 }, { 1143, 0x0051 }, { 1146, 0xc000 }, { 1148, 0x430a },
+ { 1153, 0x9071 }, { 1159, 0x30c8 }, { 1164, 0x0008 }, { 1165, 0x5800 },
+ { 1168, 0x0e99 }, { 1175, 0xf700 }, { 1182, 0x5f80 }, { 1189, 0x0041 },
+ { 1191, 0x00b0 }, { 1194, 0x9410 }, { 1198, 0x0018 }, { 1200, 0x6280 },
+ /* 0x5600 */
+ { 1204, 0x0240 }, { 1206, 0x09d0 }, { 1211, 0x8200 }, { 1213, 0x0156 },
+ { 1218, 0x5004 }, { 1221, 0x0801 }, { 1223, 0x1d10 }, { 1228, 0x0510 },
+ { 1231, 0x84c1 }, { 1236, 0x0010 }, { 1237, 0x4025 }, { 1241, 0x1050 },
+ { 1244, 0x410f }, { 1250, 0x4d8a }, { 1257, 0x4009 }, { 1260, 0xa60d },
+ /* 0x5700 */
+ { 1267, 0xab19 }, { 1275, 0x914c }, { 1281, 0x21c0 }, { 1285, 0x0981 },
+ { 1289, 0xc485 }, { 1295, 0x0003 }, { 1297, 0x0652 }, { 1302, 0x8000 },
+ { 1303, 0x0b04 }, { 1307, 0x0008 }, { 1308, 0x041d }, { 1313, 0x0009 },
+ { 1315, 0x4849 }, { 1320, 0x905c }, { 1326, 0x0009 }, { 1328, 0x1690 },
+ /* 0x5800 */
+ { 1333, 0x0c65 }, { 1339, 0x2220 }, { 1342, 0x8412 }, { 1346, 0x2433 },
+ { 1352, 0x0c03 }, { 1356, 0x4796 }, { 1364, 0x0a04 }, { 1367, 0x4225 },
+ { 1372, 0x0028 }, { 1374, 0x9088 }, { 1378, 0x4900 }, { 1381, 0x4f08 },
+ { 1387, 0x14a2 }, { 1392, 0xd3aa }, { 1401, 0xd830 }, { 1407, 0x3e87 },
+ /* 0x5900 */
+ { 1416, 0x8604 }, { 1420, 0x1f61 }, { 1428, 0x7ea4 }, { 1437, 0x4186 },
+ { 1442, 0xc390 }, { 1448, 0x05b3 }, { 1455, 0x57a5 }, { 1464, 0x2118 },
+ { 1468, 0x241e }, { 1474, 0x2a48 }, { 1479, 0x1128 }, { 1483, 0x4a04 },
+ { 1487, 0x0a40 }, { 1490, 0x161b }, { 1497, 0x0d60 }, { 1502, 0x8840 },
+ /* 0x5a00 */
+ { 1505, 0x020a }, { 1508, 0x9502 }, { 1513, 0x8221 }, { 1517, 0x1060 },
+ { 1520, 0x0243 }, { 1524, 0x0400 }, { 1525, 0x1444 }, { 1529, 0x8000 },
+ { 1530, 0x0000 }, { 1530, 0x0c04 }, { 1533, 0x0000 }, { 1533, 0x7000 },
+ { 1536, 0x1a06 }, { 1541, 0x00c1 }, { 1544, 0x024a }, { 1548, 0x0c00 },
+ /* 0x5b00 */
+ { 1550, 0x1a00 }, { 1553, 0x0040 }, { 1554, 0x1404 }, { 1557, 0x4045 },
+ { 1561, 0x0029 }, { 1564, 0xbdb3 }, { 1575, 0x0a78 }, { 1581, 0x052b },
+ { 1587, 0xbba9 }, { 1597, 0xbfa0 }, { 1606, 0x407c }, { 1612, 0x8379 },
+ { 1620, 0x12fc }, { 1628, 0xe81d }, { 1636, 0x4bf6 }, { 1646, 0xc569 },
+ /* 0x5c00 */
+ { 1654, 0xeff6 }, { 1667, 0x044a }, { 1671, 0x2115 }, { 1676, 0xff02 },
+ { 1685, 0xed63 }, { 1695, 0x402b }, { 1700, 0xd033 }, { 1707, 0x0242 },
+ { 1710, 0x1000 }, { 1711, 0x0013 }, { 1714, 0x1b02 }, { 1719, 0x59ca },
+ { 1727, 0x00a0 }, { 1729, 0x0200 }, { 1730, 0xa703 }, { 1737, 0x2c41 },
+ /* 0x5d00 */
+ { 1742, 0x4880 }, { 1745, 0x8ff2 }, { 1755, 0x0204 }, { 1757, 0x0000 },
+ { 1757, 0x5800 }, { 1760, 0x1005 }, { 1763, 0x9200 }, { 1766, 0x0048 },
+ { 1768, 0x1894 }, { 1773, 0x2001 }, { 1775, 0x5004 }, { 1778, 0x3480 },
+ { 1782, 0x3200 }, { 1785, 0x684c }, { 1791, 0x49ea }, { 1799, 0x68be },
+ /* 0x5e00 */
+ { 1808, 0x184c }, { 1813, 0x2e42 }, { 1819, 0xa820 }, { 1823, 0x21c9 },
+ { 1829, 0x50b9 }, { 1836, 0x80b0 }, { 1840, 0x001e }, { 1844, 0xff7c },
+ { 1857, 0x849a }, { 1863, 0x14e0 }, { 1868, 0x28c1 }, { 1873, 0x01e0 },
+ { 1877, 0x870e }, { 1884, 0xac49 }, { 1891, 0x130f }, { 1898, 0xdddb },
+ /* 0x5f00 */
+ { 1910, 0xbe1a }, { 1919, 0x89fb }, { 1929, 0xa2e0 }, { 1935, 0x51a2 },
+ { 1941, 0x5502 }, { 1946, 0x32ca }, { 1953, 0x3e46 }, { 1961, 0x928b },
+ { 1968, 0x1dbf }, { 1979, 0x438f }, { 1987, 0x6703 }, { 1994, 0x3218 },
+ { 1999, 0x3028 }, { 2003, 0x33c0 }, { 2009, 0x0811 }, { 2012, 0xa923 },
+ /* 0x6000 */
+ { 2019, 0xc000 }, { 2021, 0x3a65 }, { 2029, 0x8fe3 }, { 2039, 0x0402 },
+ { 2041, 0x2c4e }, { 2048, 0x8625 }, { 2054, 0xbf3d }, { 2066, 0x00a1 },
+ { 2069, 0x3a1a }, { 2076, 0x8cd4 }, { 2083, 0x06c9 }, { 2089, 0x317c },
+ { 2097, 0x00e0 }, { 2100, 0x950a }, { 2106, 0x018b }, { 2111, 0x0edb },
+ /* 0x6100 */
+ { 2120, 0xe34b }, { 2129, 0x8c20 }, { 2133, 0x1182 }, { 2137, 0xf010 },
+ { 2142, 0x7d94 }, { 2151, 0xa728 }, { 2158, 0xc9ac }, { 2166, 0x40fb },
+ { 2174, 0x4484 }, { 2178, 0x0653 }, { 2184, 0x5a90 }, { 2190, 0x4444 },
+ { 2194, 0x3fc8 }, { 2203, 0x0001 }, { 2204, 0x0048 }, { 2206, 0xf5d4 },
+ /* 0x6200 */
+ { 2216, 0x7701 }, { 2223, 0xec57 }, { 2233, 0xc442 }, { 2238, 0x891d },
+ { 2245, 0x6b83 }, { 2253, 0x4928 }, { 2258, 0x4109 }, { 2262, 0xd242 },
+ { 2268, 0x061d }, { 2274, 0x59fe }, { 2285, 0x1800 }, { 2287, 0x3a22 },
+ { 2293, 0xb7e4 }, { 2303, 0x3b9f }, { 2314, 0xf003 }, { 2320, 0xc0ea },
+ /* 0x6300 */
+ { 2327, 0x1386 }, { 2333, 0x8202 }, { 2336, 0x8980 }, { 2340, 0xe400 },
+ { 2344, 0xb200 }, { 2348, 0x10a1 }, { 2352, 0x4b80 }, { 2357, 0x0cc4 },
+ { 2362, 0xd309 }, { 2369, 0x8944 }, { 2374, 0x1faf }, { 2385, 0x4834 },
+ { 2390, 0x8259 }, { 2396, 0x0c45 }, { 2401, 0x420a }, { 2405, 0x0450 },
+ /* 0x6400 */
+ { 2408, 0xa040 }, { 2411, 0x10c8 }, { 2415, 0x3140 }, { 2419, 0x4450 },
+ { 2423, 0x4004 }, { 2425, 0x0100 }, { 2426, 0x8280 }, { 2429, 0x0540 },
+ { 2432, 0x0108 }, { 2434, 0x442c }, { 2439, 0x6a30 }, { 2445, 0x1a05 },
+ { 2450, 0x20a6 }, { 2455, 0x0514 }, { 2459, 0x90cf }, { 2467, 0x6456 },
+ /* 0x6500 */
+ { 2474, 0x0021 }, { 2476, 0x3100 }, { 2479, 0x9c18 }, { 2485, 0xcbf0 },
+ { 2494, 0xa120 }, { 2498, 0x63e2 }, { 2506, 0x104c }, { 2510, 0x01b5 },
+ { 2516, 0x538c }, { 2523, 0x9a83 }, { 2530, 0xb8b2 }, { 2538, 0x3281 },
+ { 2543, 0x987a }, { 2551, 0x0a84 }, { 2555, 0x33e7 }, { 2565, 0x0c02 },
+ /* 0x6600 */
+ { 2568, 0xd4cc }, { 2576, 0x9018 }, { 2580, 0xa1a1 }, { 2586, 0x9070 },
+ { 2591, 0x8a1e }, { 2598, 0xe004 }, { 2602, 0xc3d4 }, { 2610, 0x0451 },
+ { 2614, 0x439a }, { 2621, 0x21c2 }, { 2626, 0x4844 }, { 2630, 0x5310 },
+ { 2635, 0x0292 }, { 2639, 0x3640 }, { 2644, 0x0241 }, { 2647, 0xf3bd },
+ /* 0x6700 */
+ { 2659, 0xab09 }, { 2666, 0xe8f0 }, { 2674, 0x7dc0 }, { 2682, 0xa5d2 },
+ { 2690, 0xc242 }, { 2695, 0xd24b }, { 2703, 0xa43f }, { 2712, 0xd0af },
+ { 2721, 0x1aa0 }, { 2726, 0x34a1 }, { 2732, 0x8247 }, { 2738, 0x03d8 },
+ { 2744, 0xc452 }, { 2750, 0x651b }, { 2758, 0xd294 }, { 2765, 0xc83a },
+ /* 0x6800 */
+ { 2772, 0x001c }, { 2775, 0x40c8 }, { 2779, 0x0e06 }, { 2784, 0x3314 },
+ { 2790, 0x614f }, { 2798, 0xb21b }, { 2806, 0x0088 }, { 2808, 0xc0d0 },
+ { 2813, 0xa02a }, { 2818, 0xa898 }, { 2824, 0xa1c5 }, { 2831, 0x166b },
+ { 2839, 0x2e50 }, { 2845, 0x85b4 }, { 2852, 0xc08b }, { 2858, 0x0604 },
+ /* 0x6900 */
+ { 2861, 0xf933 }, { 2871, 0x1e04 }, { 2876, 0x056e }, { 2883, 0xa251 },
+ { 2889, 0x0400 }, { 2890, 0x7638 }, { 2898, 0xec07 }, { 2906, 0x73b8 },
+ { 2915, 0x4406 }, { 2919, 0x1832 }, { 2924, 0x4081 }, { 2927, 0xc816 },
+ { 2933, 0x7c8a }, { 2941, 0x6309 }, { 2947, 0x2980 }, { 2951, 0xaa04 },
+ /* 0x6a00 */
+ { 2956, 0x1c24 }, { 2961, 0xca9c }, { 2969, 0x4e0e }, { 2976, 0x2760 },
+ { 2982, 0x0990 }, { 2986, 0x8300 }, { 2989, 0x0046 }, { 2992, 0x8104 },
+ { 2995, 0x6011 }, { 2999, 0x1081 }, { 3002, 0x540d }, { 3008, 0x0908 },
+ { 3011, 0x000e }, { 3014, 0xcc0a }, { 3020, 0x0500 }, { 3022, 0x0c00 },
+ /* 0x6b00 */
+ { 3024, 0x0430 }, { 3027, 0xa044 }, { 3031, 0x008b }, { 3035, 0x6784 },
+ { 3042, 0x5288 }, { 3047, 0x8a19 }, { 3053, 0x865e }, { 3061, 0x8b18 },
+ { 3067, 0x2e59 }, { 3075, 0x4160 }, { 3079, 0x8c10 }, { 3083, 0x9cbe },
+ { 3093, 0x6861 }, { 3099, 0x891c }, { 3105, 0x9800 }, { 3108, 0x0008 },
+ /* 0x6c00 */
+ { 3109, 0x8100 }, { 3111, 0x089a }, { 3116, 0x0018 }, { 3118, 0x4190 },
+ { 3122, 0x4007 }, { 3126, 0xe4a1 }, { 3133, 0x0505 }, { 3137, 0x640d },
+ { 3143, 0x310e }, { 3149, 0x0e4d }, { 3156, 0x4806 }, { 3160, 0xff0a },
+ { 3170, 0x1632 }, { 3176, 0x2aa8 }, { 3182, 0x852e }, { 3189, 0x000b },
+ /* 0x6d00 */
+ { 3192, 0x1800 }, { 3194, 0xca84 }, { 3200, 0x0e20 }, { 3204, 0x696c },
+ { 3212, 0x0032 }, { 3215, 0x1600 }, { 3218, 0x5658 }, { 3225, 0x0390 },
+ { 3229, 0x5120 }, { 3233, 0x1a28 }, { 3238, 0x8000 }, { 3239, 0x1124 },
+ { 3243, 0x18e1 }, { 3249, 0x4326 }, { 3255, 0x5d52 }, { 3263, 0x0eaa },
+ /* 0x6e00 */
+ { 3270, 0x0fa0 }, { 3276, 0xae28 }, { 3283, 0xfa7b }, { 3295, 0x4500 },
+ { 3298, 0x6408 }, { 3302, 0x8940 }, { 3306, 0xc880 }, { 3310, 0xc044 },
+ { 3314, 0x9005 }, { 3318, 0xb141 }, { 3324, 0x8424 }, { 3328, 0x24c4 },
+ { 3333, 0x1a34 }, { 3339, 0x603a }, { 3345, 0x9000 }, { 3347, 0xc194 },
+ /* 0x6f00 */
+ { 3353, 0x8246 }, { 3358, 0x003a }, { 3362, 0x180d }, { 3367, 0xc106 },
+ { 3372, 0x0022 }, { 3374, 0x9910 }, { 3379, 0xe050 }, { 3384, 0x1511 },
+ { 3389, 0x4057 }, { 3395, 0x0082 }, { 3397, 0x041a }, { 3401, 0x020a },
+ { 3404, 0x004f }, { 3409, 0x8930 }, { 3414, 0xd813 }, { 3421, 0x444a },
+ /* 0x7000 */
+ { 3426, 0x8a02 }, { 3430, 0xed22 }, { 3438, 0x10c0 }, { 3441, 0x4005 },
+ { 3444, 0x1000 }, { 3445, 0x0102 }, { 3447, 0x8808 }, { 3450, 0x3101 },
+ { 3454, 0x4600 }, { 3457, 0x0204 }, { 3459, 0xf000 }, { 3463, 0x0708 },
+ { 3467, 0x8900 }, { 3470, 0xa200 }, { 3473, 0x0000 }, { 3473, 0x2202 },
+ /* 0x7100 */
+ { 3476, 0x0200 }, { 3477, 0x1610 }, { 3481, 0x0042 }, { 3483, 0x1040 },
+ { 3485, 0x5200 }, { 3488, 0x0260 }, { 3491, 0x52f4 }, { 3499, 0x2000 },
+ { 3500, 0x8510 }, { 3504, 0x8230 }, { 3508, 0x1100 }, { 3510, 0x4202 },
+ { 3513, 0x4308 }, { 3517, 0x80b5 }, { 3523, 0x70e1 }, { 3530, 0x9a20 },
+ /* 0x7200 */
+ { 3535, 0x2040 }, { 3537, 0x0801 }, { 3539, 0x3500 }, { 3543, 0xfc65 },
+ { 3553, 0x19c1 }, { 3559, 0xab04 }, { 3565, 0x0286 }, { 3569, 0x6214 },
+ { 3574, 0x0087 }, { 3578, 0x0044 }, { 3580, 0x9085 }, { 3585, 0x0244 },
+ { 3588, 0x405c }, { 3593, 0x0a85 }, { 3598, 0x3207 }, { 3604, 0x3380 },
+ /* 0x7300 */
+ { 3609, 0x0400 }, { 3610, 0xb8c0 }, { 3616, 0xce20 }, { 3622, 0xc0d0 },
+ { 3627, 0xc030 }, { 3631, 0x0080 }, { 3632, 0x0508 }, { 3635, 0x0d25 },
+ { 3641, 0x0a90 }, { 3645, 0x0040 }, { 3646, 0x0200 }, { 3647, 0x080c },
+ { 3650, 0x6505 }, { 3656, 0x4000 }, { 3657, 0x6421 }, { 3662, 0x4102 },
+ /* 0x7400 */
+ { 3665, 0x0268 }, { 3669, 0x0000 }, { 3669, 0x0024 }, { 3671, 0x847c },
+ { 3678, 0x0002 }, { 3679, 0xde20 }, { 3686, 0x8619 }, { 3692, 0x4049 },
+ { 3696, 0x0808 }, { 3698, 0x4000 }, { 3699, 0x0084 }, { 3701, 0x2001 },
+ { 3703, 0x8400 }, { 3705, 0x1010 }, { 3707, 0x42cd }, { 3714, 0x01c7 },
+ /* 0x7500 */
+ { 3720, 0x7038 }, { 3726, 0xd52a }, { 3734, 0x1968 }, { 3740, 0x1d8f },
+ { 3749, 0xbe50 }, { 3757, 0x3e12 }, { 3764, 0x2ef5 }, { 3774, 0x81d9 },
+ { 3781, 0xcec4 }, { 3789, 0x2412 }, { 3793, 0x0828 }, { 3796, 0x732e },
+ { 3805, 0x24ac }, { 3811, 0x4b34 }, { 3818, 0x020c }, { 3821, 0xd41d },
+ /* 0x7600 */
+ { 3829, 0x2a02 }, { 3833, 0x8000 }, { 3834, 0x0097 }, { 3839, 0x0811 },
+ { 3842, 0x11c4 }, { 3847, 0x1144 }, { 3851, 0x1786 }, { 3858, 0x7d45 },
+ { 3867, 0x49d9 }, { 3875, 0x0649 }, { 3880, 0x4000 }, { 3881, 0x8791 },
+ { 3888, 0x254c }, { 3894, 0xd8c4 }, { 3901, 0x44ba }, { 3908, 0x4914 },
+ /* 0x7700 */
+ { 3913, 0x1b92 }, { 3920, 0xc800 }, { 3923, 0x0271 }, { 3928, 0x1580 },
+ { 3932, 0x0081 }, { 3934, 0x0c00 }, { 3936, 0x096a }, { 3942, 0xc200 },
+ { 3945, 0x4800 }, { 3947, 0x4002 }, { 3949, 0x3021 }, { 3953, 0xba49 },
+ { 3961, 0x2080 }, { 3963, 0x1c80 }, { 3967, 0xe2ac }, { 3975, 0x1008 },
+ /* 0x7800 */
+ { 3977, 0x1004 }, { 3979, 0x0034 }, { 3982, 0x00e1 }, { 3986, 0x8414 },
+ { 3990, 0x0020 }, { 3991, 0x2000 }, { 3992, 0x9800 }, { 3995, 0x1014 },
+ { 3998, 0x70c2 }, { 4004, 0x04aa }, { 4009, 0x8688 }, { 4014, 0x5420 },
+ { 4018, 0x0c62 }, { 4023, 0x0413 }, { 4027, 0x9180 }, { 4031, 0x2010 },
+ /* 0x7900 */
+ { 4033, 0x4082 }, { 4036, 0x0206 }, { 4039, 0x1c40 }, { 4043, 0x5400 },
+ { 4046, 0x0383 }, { 4051, 0xe4e9 }, { 4060, 0x2125 }, { 4065, 0x8480 },
+ { 4068, 0xe433 }, { 4076, 0x2000 }, { 4077, 0x44c0 }, { 4081, 0xe609 },
+ { 4088, 0x0a03 }, { 4092, 0x8126 }, { 4097, 0x12da }, { 4104, 0x0801 },
+ /* 0x7a00 */
+ { 4106, 0x6901 }, { 4111, 0x9790 }, { 4118, 0x4001 }, { 4120, 0xf886 },
+ { 4128, 0xe24d }, { 4136, 0x0081 }, { 4138, 0x0a0e }, { 4143, 0xa651 },
+ { 4150, 0x011a }, { 4154, 0x81ec }, { 4161, 0xc600 }, { 4165, 0x8441 },
+ { 4169, 0xadb8 }, { 4178, 0xb62c }, { 4186, 0xa46f }, { 4195, 0x8741 },
+ /* 0x7b00 */
+ { 4201, 0x8d54 }, { 4208, 0x4b02 }, { 4213, 0x1161 }, { 4218, 0x0268 },
+ { 4222, 0xbb60 }, { 4230, 0x2057 }, { 4236, 0x50a0 }, { 4240, 0x0433 },
+ { 4245, 0xa8c0 }, { 4250, 0xb7b4 }, { 4260, 0x2402 }, { 4263, 0x0112 },
+ { 4266, 0x9ad3 }, { 4275, 0x2000 }, { 4276, 0x2271 }, { 4282, 0x00c8 },
+ /* 0x7c00 */
+ { 4285, 0x2081 }, { 4288, 0x809e }, { 4294, 0x0c8a }, { 4299, 0xe180 },
+ { 4304, 0xb009 }, { 4309, 0x8151 }, { 4314, 0x1031 }, { 4318, 0x4028 },
+ { 4321, 0x2a0e }, { 4327, 0x89a5 }, { 4334, 0x69b6 }, { 4343, 0x620e },
+ { 4349, 0x4425 }, { 4354, 0xd144 }, { 4360, 0x8085 }, { 4364, 0x4d54 },
+ /* 0x7d00 */
+ { 4371, 0x2c75 }, { 4379, 0x1fb1 }, { 4388, 0xd807 }, { 4395, 0x862d },
+ { 4402, 0xd87c }, { 4411, 0x4841 }, { 4415, 0x414e }, { 4421, 0x226e },
+ { 4428, 0x8200 }, { 4430, 0x9e08 }, { 4436, 0xf80c }, { 4443, 0xed37 },
+ { 4454, 0x8c80 }, { 4458, 0x7526 }, { 4466, 0x9313 }, { 4473, 0x0814 },
+ /* 0x7e00 */
+ { 4476, 0x0e32 }, { 4482, 0xc804 }, { 4486, 0x484e }, { 4492, 0x6ea6 },
+ { 4501, 0x2c4a }, { 4507, 0x6670 }, { 4514, 0x26c0 }, { 4519, 0xba01 },
+ { 4525, 0xd30c }, { 4532, 0x185d }, { 4539, 0x0000 }, { 4539, 0x0000 },
+ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 },
+ /* 0x7f00 */
+ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0540 },
+ { 4542, 0x7020 }, { 4546, 0x8133 }, { 4552, 0x4f81 }, { 4559, 0x03a5 },
+ { 4565, 0x55ec }, { 4574, 0x6410 }, { 4578, 0xc318 }, { 4584, 0x2344 },
+ { 4589, 0x1462 }, { 4594, 0x0034 }, { 4597, 0x0a43 }, { 4602, 0x1a09 },
+ /* 0x8000 */
+ { 4607, 0x187b }, { 4615, 0x13a5 }, { 4622, 0x0102 }, { 4624, 0xa848 },
+ { 4629, 0x0440 }, { 4631, 0xc544 }, { 4637, 0x8106 }, { 4641, 0xe2dd },
+ { 4651, 0x1af0 }, { 4658, 0x2d48 }, { 4664, 0xb626 }, { 4672, 0x0416 },
+ { 4676, 0x5058 }, { 4681, 0x6e40 }, { 4687, 0x8032 }, { 4691, 0x3112 },
+ /* 0x8100 */
+ { 4696, 0x07e4 }, { 4703, 0x0c00 }, { 4705, 0x8208 }, { 4708, 0x420a },
+ { 4712, 0x4840 }, { 4715, 0x803b }, { 4721, 0x4860 }, { 4725, 0x8713 },
+ { 4732, 0x850d }, { 4738, 0x3428 }, { 4743, 0x0319 }, { 4748, 0xe529 },
+ { 4756, 0x2345 }, { 4762, 0x870a }, { 4768, 0x25a9 }, { 4775, 0x5c18 },
+ /* 0x8200 */
+ { 4781, 0x77a6 }, { 4791, 0xd9c5 }, { 4800, 0x5e00 }, { 4805, 0x03e8 },
+ { 4811, 0x0081 }, { 4813, 0xa700 }, { 4818, 0xcd54 }, { 4826, 0x41c6 },
+ { 4832, 0x2800 }, { 4834, 0xa204 }, { 4838, 0xb860 }, { 4844, 0x2b0a },
+ { 4850, 0x0020 }, { 4851, 0xda9e }, { 4861, 0x08ea }, { 4867, 0x0e1a },
+ /* 0x8300 */
+ { 4873, 0x427c }, { 4880, 0x11c0 }, { 4884, 0x8908 }, { 4888, 0x0376 },
+ { 4895, 0x8621 }, { 4900, 0x0105 }, { 4903, 0x0000 }, { 4903, 0x18a8 },
+ { 4908, 0x46a0 }, { 4913, 0xc448 }, { 4918, 0x0d05 }, { 4923, 0x2022 },
+ { 4926, 0x5422 }, { 4931, 0x9148 }, { 4936, 0x8a01 }, { 4940, 0x2897 },
+ /* 0x8400 */
+ { 4947, 0x7898 }, { 4954, 0x0008 }, { 4955, 0x1605 }, { 4960, 0x3122 },
+ { 4965, 0x4240 }, { 4968, 0x0880 }, { 4970, 0xfa4e }, { 4980, 0x06a2 },
+ { 4985, 0x0814 }, { 4988, 0x9211 }, { 4993, 0x2002 }, { 4995, 0x9b04 },
+ { 5001, 0x2e52 }, { 5008, 0x0643 }, { 5013, 0x5000 }, { 5015, 0x9010 },
+ /* 0x8500 */
+ { 5018, 0x0041 }, { 5020, 0x85ba }, { 5028, 0x3042 }, { 5032, 0x2020 },
+ { 5034, 0x4f0b }, { 5042, 0x05a0 }, { 5046, 0x2708 }, { 5051, 0x4080 },
+ { 5053, 0x0591 }, { 5058, 0x1a93 }, { 5065, 0xdf50 }, { 5074, 0x0600 },
+ { 5076, 0xa202 }, { 5080, 0x3021 }, { 5084, 0x0630 }, { 5088, 0x4e80 },
+ /* 0x8600 */
+ { 5093, 0x0cc4 }, { 5098, 0x04c8 }, { 5102, 0xa004 }, { 5105, 0x8001 },
+ { 5107, 0x6000 }, { 5109, 0xd431 }, { 5116, 0x0880 }, { 5118, 0x0a02 },
+ { 5121, 0x1c00 }, { 5124, 0x0028 }, { 5126, 0x8e18 }, { 5132, 0x0041 },
+ { 5134, 0x6ad0 }, { 5141, 0xca10 }, { 5146, 0xf210 }, { 5152, 0x4b00 },
+ /* 0x8700 */
+ { 5156, 0x274d }, { 5164, 0x1506 }, { 5169, 0x0220 }, { 5171, 0x8890 },
+ { 5175, 0x5a00 }, { 5179, 0x82a8 }, { 5184, 0x4549 }, { 5190, 0x8150 },
+ { 5194, 0x2004 }, { 5196, 0x8000 }, { 5197, 0x8804 }, { 5200, 0x2c08 },
+ { 5204, 0x08d1 }, { 5209, 0x0005 }, { 5211, 0x8001 }, { 5213, 0x4ac4 },
+ /* 0x8800 */
+ { 5219, 0xe020 }, { 5223, 0x0062 }, { 5226, 0x008e }, { 5230, 0x0a42 },
+ { 5234, 0x3055 }, { 5240, 0x6a8c }, { 5247, 0x090e }, { 5252, 0xe0a5 },
+ { 5259, 0x2906 }, { 5264, 0x42c4 }, { 5269, 0x4814 }, { 5273, 0x80b3 },
+ { 5279, 0x803e }, { 5285, 0xb330 }, { 5292, 0x0102 }, { 5294, 0x731c },
+ /* 0x8900 */
+ { 5302, 0x1494 }, { 5307, 0x600d }, { 5312, 0x0c20 }, { 5315, 0x0940 },
+ { 5318, 0x301a }, { 5323, 0xc040 }, { 5326, 0xa451 }, { 5332, 0xc094 },
+ { 5337, 0x8dca }, { 5345, 0x05c8 }, { 5350, 0x96c2 }, { 5357, 0xa40c },
+ { 5362, 0x0001 }, { 5363, 0x3404 }, { 5367, 0x00c8 }, { 5370, 0x0110 },
+ /* 0x8a00 */
+ { 5372, 0x550d }, { 5379, 0xa9c9 }, { 5387, 0x2428 }, { 5391, 0x1c5a },
+ { 5398, 0x0142 }, { 5401, 0x4837 }, { 5408, 0x7a4d }, { 5417, 0x100f },
+ { 5422, 0x32b4 }, { 5429, 0x452a }, { 5435, 0x317b }, { 5444, 0x9205 },
+ { 5449, 0xb894 }, { 5456, 0x5c44 }, { 5462, 0x68d7 }, { 5471, 0x458a },
+ /* 0x8b00 */
+ { 5477, 0x5097 }, { 5484, 0x2ed1 }, { 5492, 0x1943 }, { 5498, 0x4208 },
+ { 5501, 0xd202 }, { 5506, 0x9d40 }, { 5512, 0x9840 }, { 5516, 0x2097 },
+ { 5522, 0x5409 }, { 5527, 0x064d }, { 5533, 0x0000 }, { 5533, 0x0000 },
+ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 },
+ /* 0x8c00 */
+ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x8480 },
+ { 5536, 0x5542 }, { 5542, 0x0421 }, { 5545, 0x1c06 }, { 5550, 0x1700 },
+ { 5554, 0x7624 }, { 5561, 0x6110 }, { 5565, 0xff87 }, { 5577, 0xb9dd },
+ { 5588, 0x659f }, { 5598, 0x5c0a }, { 5604, 0x245d }, { 5611, 0x3c00 },
+ /* 0x8d00 */
+ { 5615, 0xadb0 }, { 5623, 0x0059 }, { 5627, 0x0000 }, { 5627, 0x0000 },
+ { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x28d0 }, { 5632, 0x009b },
+ { 5637, 0x0422 }, { 5640, 0x0200 }, { 5641, 0x0108 }, { 5643, 0x4408 },
+ { 5646, 0x9804 }, { 5650, 0xac40 }, { 5655, 0x8d0a }, { 5661, 0x9028 },
+ /* 0x8e00 */
+ { 5665, 0x8700 }, { 5669, 0xe001 }, { 5673, 0x0400 }, { 5674, 0x0031 },
+ { 5677, 0x1794 }, { 5684, 0x8221 }, { 5688, 0x0019 }, { 5691, 0x1054 },
+ { 5695, 0x2cb2 }, { 5702, 0x021a }, { 5706, 0x9c02 }, { 5711, 0x4003 },
+ { 5714, 0x3d60 }, { 5721, 0x8804 }, { 5724, 0x080c }, { 5727, 0x7900 },
+ /* 0x8f00 */
+ { 5732, 0x1628 }, { 5737, 0xba3c }, { 5746, 0x8640 }, { 5750, 0xcb08 },
+ { 5756, 0x7274 }, { 5764, 0x9080 }, { 5767, 0x001e }, { 5771, 0x0000 },
+ { 5771, 0x0000 }, { 5771, 0xd800 }, { 5775, 0xe188 }, { 5781, 0x9c87 },
+ { 5789, 0x4034 }, { 5793, 0x0412 }, { 5796, 0xae64 }, { 5804, 0x2791 },
+ /* 0x9000 */
+ { 5811, 0xe86b }, { 5820, 0xe6fb }, { 5832, 0x408f }, { 5838, 0x5366 },
+ { 5846, 0xeea6 }, { 5856, 0x537f }, { 5867, 0xe32b }, { 5876, 0xb5e4 },
+ { 5885, 0x869f }, { 5894, 0x0002 }, { 5895, 0x8548 }, { 5900, 0x0122 },
+ { 5903, 0x4402 }, { 5906, 0x0800 }, { 5907, 0x2116 }, { 5912, 0x20a0 },
+ /* 0x9100 */
+ { 5915, 0x0004 }, { 5916, 0x0204 }, { 5918, 0x2000 }, { 5919, 0x0005 },
+ { 5921, 0x7e00 }, { 5927, 0x0154 }, { 5931, 0x162c }, { 5937, 0x01ac },
+ { 5942, 0x2a84 }, { 5947, 0x1085 }, { 5951, 0x8c14 }, { 5956, 0x0530 },
+ { 5960, 0xfbc3 }, { 5971, 0xb943 }, { 5979, 0x00ca }, { 5983, 0x9060 },
+ /* 0x9200 */
+ { 5987, 0x6000 }, { 5989, 0x4032 }, { 5993, 0x1200 }, { 5995, 0x8090 },
+ { 5998, 0x0b30 }, { 6003, 0x4c81 }, { 6008, 0x0054 }, { 6011, 0x4002 },
+ { 6013, 0x0029 }, { 6016, 0x1d6a }, { 6024, 0x2000 }, { 6025, 0x0280 },
+ { 6027, 0x8000 }, { 6028, 0x0004 }, { 6029, 0x2610 }, { 6033, 0x150c },
+ /* 0x9300 */
+ { 6038, 0x8040 }, { 6040, 0x0701 }, { 6044, 0xd94d }, { 6053, 0x0c24 },
+ { 6057, 0x2810 }, { 6060, 0x1850 }, { 6064, 0x5001 }, { 6067, 0x5020 },
+ { 6070, 0x1000 }, { 6071, 0x04d0 }, { 6075, 0x7080 }, { 6079, 0x0201 },
+ { 6081, 0x0108 }, { 6083, 0x21c3 }, { 6089, 0x0132 }, { 6093, 0x0000 },
+ /* 0x9400 */
+ { 6093, 0x0088 }, { 6095, 0x0719 }, { 6101, 0x0802 }, { 6103, 0x0560 },
+ { 6107, 0x0012 }, { 6109, 0x4c0e }, { 6115, 0x0405 }, { 6118, 0xf0a1 },
+ { 6125, 0x0002 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ /* 0x9500 */
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0080 },
+ { 6127, 0x8e8d }, { 6135, 0x035a }, { 6141, 0x21bd }, { 6149, 0x5a04 },
+ { 6154, 0x3488 }, { 6159, 0x1170 }, { 6164, 0x0026 }, { 6167, 0x0000 },
+ /* 0x9600 */
+ { 6167, 0x0000 }, { 6167, 0x1000 }, { 6168, 0xc502 }, { 6173, 0x8804 },
+ { 6176, 0xb815 }, { 6183, 0xf801 }, { 6189, 0x147c }, { 6196, 0x25ed },
+ { 6205, 0xed60 }, { 6213, 0x1bb0 }, { 6220, 0x0589 }, { 6225, 0x1bd7 },
+ { 6235, 0x7af3 }, { 6246, 0x1a62 }, { 6252, 0x0d0c }, { 6257, 0x0ac5 },
+ /* 0x9700 */
+ { 6263, 0xe5d1 }, { 6272, 0x524a }, { 6278, 0x0490 }, { 6281, 0x6305 },
+ { 6287, 0x0354 }, { 6292, 0x5244 }, { 6297, 0x2b57 }, { 6306, 0x1612 },
+ { 6311, 0xa872 }, { 6318, 0x1101 }, { 6321, 0x2949 }, { 6327, 0x0018 },
+ { 6329, 0x0948 }, { 6333, 0x1008 }, { 6335, 0x6000 }, { 6337, 0x886c },
+ /* 0x9800 */
+ { 6343, 0x916e }, { 6351, 0x058f }, { 6358, 0x3012 }, { 6362, 0x3990 },
+ { 6368, 0xf840 }, { 6374, 0x4930 }, { 6379, 0x8880 }, { 6382, 0x001b },
+ { 6386, 0x0000 }, { 6386, 0x0000 }, { 6386, 0x8500 }, { 6389, 0x0042 },
+ { 6391, 0x0058 }, { 6394, 0x9800 }, { 6397, 0xea04 }, { 6403, 0x7014 },
+ /* 0x9900 */
+ { 6408, 0x1628 }, { 6413, 0x611d }, { 6420, 0x5113 }, { 6426, 0x6000 },
+ { 6428, 0x1a24 }, { 6433, 0x00a7 }, { 6438, 0x0000 }, { 6438, 0x0000 },
+ { 6438, 0x0000 }, { 6438, 0x03c0 }, { 6442, 0x7120 }, { 6447, 0x1018 },
+ { 6450, 0x0172 }, { 6455, 0xa927 }, { 6463, 0x6004 }, { 6466, 0x8906 },
+ /* 0x9a00 */
+ { 6471, 0xc022 }, { 6475, 0x020c }, { 6478, 0x0900 }, { 6480, 0x4081 },
+ { 6483, 0x202d }, { 6488, 0x8ca0 }, { 6493, 0x0e34 }, { 6499, 0x0000 },
+ { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x2100 }, { 6501, 0x1101 },
+ { 6504, 0x8011 }, { 6507, 0xc11a }, { 6513, 0xec4c }, { 6521, 0x0892 },
+ /* 0x9b00 */
+ { 6525, 0x0040 }, { 6526, 0x8500 }, { 6529, 0xc7ac }, { 6538, 0x1806 },
+ { 6542, 0xe03e }, { 6550, 0x0512 }, { 6554, 0x8000 }, { 6555, 0x0010 },
+ { 6556, 0x4008 }, { 6558, 0x80ce }, { 6564, 0x6d01 }, { 6570, 0x0210 },
+ { 6572, 0x8641 }, { 6577, 0x0856 }, { 6582, 0x011e }, { 6587, 0x0027 },
+ /* 0x9c00 */
+ { 6591, 0x3750 }, { 6598, 0x083d }, { 6604, 0xe032 }, { 6610, 0x4e05 },
+ { 6616, 0x01c0 }, { 6619, 0x0484 }, { 6622, 0x0081 }, { 6624, 0x0140 },
+ { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 },
+ { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x1aa0 }, { 6631, 0x0059 },
+ /* 0x9d00 */
+ { 6635, 0x43c8 }, { 6641, 0x8824 }, { 6645, 0x1d48 }, { 6651, 0xc800 },
+ { 6654, 0x0152 }, { 6658, 0x7203 }, { 6664, 0x9013 }, { 6669, 0x0404 },
+ { 6671, 0x8280 }, { 6674, 0x0400 }, { 6675, 0x8a10 }, { 6679, 0x0d14 },
+ { 6684, 0x8056 }, { 6689, 0x0208 }, { 6691, 0xa040 }, { 6694, 0x2704 },
+ /* 0x9e00 */
+ { 6699, 0x0000 }, { 6699, 0x4c00 }, { 6702, 0x0000 }, { 6702, 0x0000 },
+ { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0xa320 },
+ { 6707, 0x1902 }, { 6711, 0xa0ae }, { 6718, 0x2660 }, { 6723, 0xdf00 },
+ { 6730, 0xf010 }, { 6735, 0x7b15 }, { 6744, 0x8121 }, { 6748, 0x3ad0 },
+ /* 0x9f00 */
+ { 6755, 0x4180 }, { 6758, 0x0028 }, { 6760, 0x1003 }, { 6763, 0x4800 },
+ { 6765, 0xcc00 }, { 6769, 0x8014 }, { 6772, 0x14cf }, { 6780, 0x00c4 },
+ { 6783, 0x2000 }, { 6784, 0x3020 }, { 6787, 0x0001 },
+};
+static const Summary16 jisx0208_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 6788, 0xdf7a }, { 6800, 0xffff }, { 6816, 0xffff }, { 6832, 0xefff },
+ { 6847, 0xffff }, { 6863, 0x3fff }, { 6877, 0x0000 }, { 6877, 0x0000 },
+ { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 },
+ { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 },
+};
+
+static int
+jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0100)
+ summary = &jisx0208_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0300 && wc < 0x0460)
+ summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030];
+ else if (wc >= 0x2000 && wc < 0x2320)
+ summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2500 && wc < 0x2670)
+ summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250];
+ else if (wc >= 0x3000 && wc < 0x3100)
+ summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = jisx0208_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/src/xlibi18n/lcUniConv/jisx0212.h b/src/xlibi18n/lcUniConv/jisx0212.h
new file mode 100644
index 00000000..3b7e6dc0
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/jisx0212.h
@@ -0,0 +1,2164 @@
+/* $XFree86: xc/lib/X11/lcUniConv/jisx0212.h,v 1.4 2001/08/09 19:14:08 dawes Exp $ */
+
+/*
+ * JISX0212.1990-0
+ */
+
+static const unsigned short jisx0212_2uni_page22[81] = {
+ /* 0x22 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x02d8, 0x02c7,
+ 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384,
+ 0x0385, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x00a1, 0x00a6, 0x00bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4,
+ 0x2116,
+};
+static const unsigned short jisx0212_2uni_page26[188] = {
+ /* 0x26 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0xfffd, 0x038c, 0xfffd,
+ 0x038e, 0x03ab, 0xfffd, 0x038f, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2,
+ 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408,
+ 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
+ 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
+};
+static const unsigned short jisx0212_2uni_page29[275] = {
+ /* 0x29 */
+ 0x00c6, 0x0110, 0xfffd, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x0141,
+ 0x013f, 0xfffd, 0x014a, 0x00d8, 0x0152, 0xfffd, 0x0166, 0x00de,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142,
+ 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2a */
+ 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104,
+ 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e,
+ 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118,
+ 0xfffd, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc,
+ 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134,
+ 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1,
+ 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5,
+ 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164,
+ 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170,
+ 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5,
+ 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2b */
+ 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101, 0x0105,
+ 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b, 0x010f,
+ 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113, 0x0119,
+ 0x01f5, 0x011d, 0x011f, 0xfffd, 0x0121, 0x0125, 0x00ed, 0x00ec,
+ 0x00ef, 0x00ee, 0x01d0, 0xfffd, 0x012b, 0x012f, 0x0129, 0x0135,
+ 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146, 0x00f1,
+ 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d, 0x00f5,
+ 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f, 0x0165,
+ 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4, 0x0171,
+ 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da, 0x01d6,
+ 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
+};
+static const unsigned short jisx0212_2uni_page30[5801] = {
+ /* 0x30 */
+ 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23, 0x4e24,
+ 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40, 0x4e41,
+ 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68, 0x4e69,
+ 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97, 0x4e9d,
+ 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0, 0x4ee1,
+ 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd, 0x4efe,
+ 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12,
+ 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60, 0x4f33,
+ 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42, 0x4f48,
+ 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58, 0x4f5f,
+ 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78, 0x4f79,
+ 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
+ /* 0x31 */
+ 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93,
+ 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7,
+ 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5,
+ 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2,
+ 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff,
+ 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010,
+ 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022,
+ 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041,
+ 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052,
+ 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066,
+ 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083,
+ 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
+ /* 0x32 */
+ 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f,
+ 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba,
+ 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0,
+ 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4,
+ 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe,
+ 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e,
+ 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e,
+ 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133,
+ 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153,
+ 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183,
+ 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad,
+ 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
+ /* 0x33 */
+ 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8, 0x51de,
+ 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7, 0x5201,
+ 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222,
+ 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249, 0x5255,
+ 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261, 0x5266,
+ 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285, 0x528a,
+ 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a, 0x529c,
+ 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6, 0x52b7,
+ 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6, 0x52c8,
+ 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc, 0x52e1,
+ 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1, 0x52f4,
+ 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
+ /* 0x34 */
+ 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f,
+ 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x5330,
+ 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c, 0x534b,
+ 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d, 0x5372,
+ 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393, 0x5394,
+ 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af, 0x53b2,
+ 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0, 0x53c5,
+ 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de, 0x53e0,
+ 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421, 0x5427,
+ 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444,
+ 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466, 0x5467,
+ 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
+ /* 0x35 */
+ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495,
+ 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa,
+ 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf,
+ 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef,
+ 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508,
+ 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532,
+ 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549,
+ 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e,
+ 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586,
+ 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597,
+ 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6,
+ 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
+ /* 0x36 */
+ 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6,
+ 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610,
+ 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637,
+ 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643,
+ 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e,
+ 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f,
+ 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c,
+ 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7,
+ 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7,
+ 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc,
+ 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5,
+ 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
+ /* 0x37 */
+ 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c, 0x5711,
+ 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723, 0x5724,
+ 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733, 0x5734,
+ 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d, 0x5752,
+ 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e, 0x576f,
+ 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779, 0x577a,
+ 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794, 0x5797,
+ 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1, 0x5795,
+ 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7, 0x57c8,
+ 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6, 0x57e7,
+ 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd, 0x57fe,
+ 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
+ /* 0x38 */
+ 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826, 0x5827,
+ 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d, 0x584f,
+ 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878,
+ 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889, 0x588a,
+ 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d, 0x58a0,
+ 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4, 0x58bc,
+ 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4, 0x58d6,
+ 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905, 0x5906,
+ 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d, 0x5921,
+ 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935, 0x5936,
+ 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b, 0x595d,
+ 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
+ /* 0x39 */
+ 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b,
+ 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7,
+ 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc,
+ 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd,
+ 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1,
+ 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e,
+ 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a,
+ 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50,
+ 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a,
+ 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c,
+ 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2,
+ 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
+ /* 0x3a */
+ 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5,
+ 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08,
+ 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d,
+ 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68,
+ 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84,
+ 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96,
+ 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7,
+ 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7,
+ 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd,
+ 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b,
+ 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a,
+ 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
+ /* 0x3b */
+ 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
+ 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0,
+ 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba,
+ 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2,
+ 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23, 0x5d24,
+ 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f, 0x5d42,
+ 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a, 0x5d5f,
+ 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70, 0x5d79,
+ 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a, 0x5d92,
+ 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0, 0x5da7,
+ 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb,
+ 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
+ /* 0x3c */
+ 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12, 0x5e14,
+ 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32, 0x5e35,
+ 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58, 0x5e5b,
+ 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
+ 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5, 0x5ea8,
+ 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec6,
+ 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5, 0x5edc,
+ 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08, 0x5f0e,
+ 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
+ 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b, 0x5f3d,
+ 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50, 0x5f54,
+ 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
+ /* 0x3d */
+ 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e,
+ 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7,
+ 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4,
+ 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3,
+ 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec,
+ 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc,
+ 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a,
+ 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048,
+ 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061,
+ 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a,
+ 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2,
+ 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
+ /* 0x3e */
+ 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb,
+ 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de,
+ 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102,
+ 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114,
+ 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b,
+ 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145,
+ 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b,
+ 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d,
+ 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0,
+ 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0,
+ 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de,
+ 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
+ /* 0x3f */
+ 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213,
+ 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622b,
+ 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c, 0x6250,
+ 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264, 0x626d,
+ 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f, 0x6290,
+ 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be, 0x62bf,
+ 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2, 0x62f4,
+ 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d, 0x6310,
+ 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335, 0x6336,
+ 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634a,
+ 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b, 0x6365,
+ 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
+ /* 0x40 */
+ 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387, 0x638a,
+ 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4, 0x63a6,
+ 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8, 0x63ce,
+ 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5, 0x63ea,
+ 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409, 0x640a,
+ 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422, 0x6424,
+ 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d, 0x643f,
+ 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a, 0x645b,
+ 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d, 0x6473,
+ 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490, 0x6491,
+ 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3, 0x64a6,
+ 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
+ /* 0x41 */
+ 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1,
+ 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0,
+ 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509,
+ 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e,
+ 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c,
+ 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f,
+ 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a,
+ 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae,
+ 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce,
+ 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4,
+ 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609,
+ 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
+ /* 0x42 */
+ 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a,
+ 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637,
+ 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657,
+ 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a,
+ 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678,
+ 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690,
+ 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4,
+ 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2,
+ 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df,
+ 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e,
+ 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745,
+ 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
+ /* 0x43 */
+ 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781, 0x6784,
+ 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679b,
+ 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd, 0x67f9,
+ 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2, 0x67d7,
+ 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6, 0x67f7,
+ 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827, 0x682c,
+ 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f, 0x6844,
+ 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b, 0x686b,
+ 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687a,
+ 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898,
+ 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa, 0x68ae,
+ 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
+ /* 0x44 */
+ 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd, 0x68e5,
+ 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1, 0x68f5,
+ 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a, 0x6910,
+ 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935, 0x6938,
+ 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b, 0x6963,
+ 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970, 0x6971,
+ 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992, 0x6996,
+ 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad, 0x69af,
+ 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1, 0x69d6,
+ 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3, 0x69f5,
+ 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15, 0x6a1a,
+ 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
+ /* 0x45 */
+ 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49,
+ 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b,
+ 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83,
+ 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e,
+ 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd,
+ 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4,
+ 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0,
+ 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07,
+ 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24,
+ 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f,
+ 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60,
+ 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
+ /* 0x46 */
+ 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2,
+ 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8,
+ 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6,
+ 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7,
+ 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e,
+ 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c,
+ 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a,
+ 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c,
+ 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b,
+ 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98,
+ 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd,
+ 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
+ /* 0x47 */
+ 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec, 0x6cee,
+ 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11,
+ 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e, 0x6d2f,
+ 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f, 0x6d61,
+ 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87, 0x6d91,
+ 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac, 0x6db4,
+ 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca, 0x6dce,
+ 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2, 0x6de5,
+ 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00, 0x6e04,
+ 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b, 0x6e3c,
+ 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51, 0x6e52,
+ 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
+ /* 0x48 */
+ 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d, 0x6e93,
+ 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3, 0x6ebb,
+ 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca, 0x6ecd,
+ 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb, 0x6efd,
+ 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18, 0x6f1a,
+ 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33, 0x6f36,
+ 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53, 0x6f57,
+ 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68, 0x6f6c,
+ 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c, 0x6f8d,
+ 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f, 0x6fa0,
+ 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0, 0x6fb5,
+ 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
+ /* 0x49 */
+ 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc,
+ 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020,
+ 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044,
+ 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e,
+ 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e,
+ 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098,
+ 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca,
+ 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4,
+ 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c,
+ 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131,
+ 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150,
+ 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
+ /* 0x4a */
+ 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a,
+ 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba,
+ 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6,
+ 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208,
+ 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b,
+ 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245,
+ 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c,
+ 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271,
+ 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d,
+ 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4,
+ 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8,
+ 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
+ /* 0x4b */
+ 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d, 0x7312,
+ 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327, 0x7328,
+ 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d, 0x7343,
+ 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e, 0x735f,
+ 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e, 0x736f,
+ 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383, 0x7385,
+ 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398, 0x739c,
+ 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa, 0x73ab,
+ 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf, 0x73c5,
+ 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3, 0x73d6,
+ 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9, 0x73f4,
+ 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
+ /* 0x4c */
+ 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411, 0x741a,
+ 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b, 0x742c,
+ 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443,
+ 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452, 0x7457,
+ 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d, 0x746e,
+ 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487, 0x7489,
+ 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a, 0x749c,
+ 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9, 0x74aa,
+ 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9, 0x74bb,
+ 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8, 0x74da,
+ 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb, 0x74ef,
+ 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
+ /* 0x4d */
+ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529,
+ 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540,
+ 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e,
+ 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c,
+ 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595,
+ 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0,
+ 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc,
+ 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef,
+ 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
+ 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619,
+ 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629,
+ 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
+ /* 0x4e */
+ 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645,
+ 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d,
+ 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d,
+ 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3,
+ 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd,
+ 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9,
+ 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9,
+ 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715,
+ 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e,
+ 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742,
+ 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756,
+ 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
+ /* 0x4f */
+ 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773, 0x7774,
+ 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794, 0x7795,
+ 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae, 0x77af,
+ 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2, 0x77d5,
+ 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea, 0x77ec,
+ 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806, 0x7809,
+ 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823, 0x782d,
+ 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847, 0x7848,
+ 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861, 0x7863,
+ 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a, 0x788f,
+ 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4, 0x78a8,
+ 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
+ /* 0x50 */
+ 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc, 0x78ce,
+ 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df, 0x78e0,
+ 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6, 0x78f7,
+ 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a, 0x791c,
+ 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d, 0x7931,
+ 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945, 0x7946,
+ 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b, 0x795c,
+ 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c, 0x797e,
+ 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998,
+ 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af, 0x79b1,
+ 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8, 0x79ca,
+ 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
+ /* 0x51 */
+ 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8,
+ 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11,
+ 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f,
+ 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45,
+ 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d,
+ 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78,
+ 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90,
+ 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5,
+ 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1,
+ 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb,
+ 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29,
+ 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
+ /* 0x52 */
+ 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e,
+ 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f,
+ 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91,
+ 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0,
+ 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2,
+ 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda,
+ 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9,
+ 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06,
+ 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20,
+ 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36,
+ 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53,
+ 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
+ /* 0x53 */
+ 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72,
+ 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94, 0x7c9e,
+ 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc,
+ 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3,
+ 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9,
+ 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f, 0x7d11,
+ 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26, 0x7d2a,
+ 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41, 0x7d47,
+ 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a, 0x7d5c,
+ 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a, 0x7d7b,
+ 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88, 0x7d8b,
+ 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
+ /* 0x54 */
+ 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7, 0x7db9,
+ 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd, 0x7dce,
+ 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea, 0x7deb,
+ 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08, 0x7e10,
+ 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27, 0x7e28,
+ 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44, 0x7e45,
+ 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61, 0x7e62,
+ 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e, 0x7e81,
+ 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98, 0x7e9a,
+ 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f43,
+ 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c, 0x7f5d,
+ 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
+ /* 0x55 */
+ 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f,
+ 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6,
+ 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8,
+ 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec,
+ 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007,
+ 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014,
+ 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c,
+ 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c,
+ 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071,
+ 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7,
+ 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4,
+ 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
+ /* 0x56 */
+ 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103,
+ 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124,
+ 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147,
+ 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168,
+ 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185,
+ 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2,
+ 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca,
+ 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1,
+ 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6,
+ 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213,
+ 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232,
+ 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
+ /* 0x57 */
+ 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260, 0x8263,
+ 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280, 0x8281,
+ 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291, 0x8294,
+ 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3, 0x82a4,
+ 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2, 0x82b4,
+ 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0, 0x82d5,
+ 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed, 0x82ef,
+ 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307, 0x8308,
+ 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f, 0x8321,
+ 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337, 0x833a,
+ 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d, 0x834e,
+ 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
+ /* 0x58 */
+ 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d, 0x8392,
+ 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d, 0x83a6,
+ 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7, 0x83c9,
+ 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8, 0x83ea,
+ 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a, 0x840f,
+ 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445, 0x8447,
+ 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456, 0x8458,
+ 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467, 0x846a,
+ 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d, 0x8481,
+ 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8, 0x84a9,
+ 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be, 0x84c0,
+ 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
+ /* 0x59 */
+ 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7,
+ 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c,
+ 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525,
+ 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f,
+ 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559,
+ 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564,
+ 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581,
+ 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598,
+ 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6,
+ 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7,
+ 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0,
+ 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
+ /* 0x5a */
+ 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611,
+ 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629,
+ 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646,
+ 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660,
+ 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675,
+ 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a,
+ 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3,
+ 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1,
+ 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc,
+ 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd,
+ 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713,
+ 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
+ /* 0x5b */
+ 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a, 0x873c,
+ 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758, 0x875d,
+ 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b, 0x8783,
+ 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b, 0x878c,
+ 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e, 0x87a0,
+ 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5, 0x87be,
+ 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5, 0x87d6,
+ 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4, 0x87ea,
+ 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff, 0x8801,
+ 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819, 0x8812,
+ 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e, 0x881f,
+ 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
+ /* 0x5c */
+ 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884a,
+ 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a, 0x885c,
+ 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b, 0x8880,
+ 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8, 0x88aa,
+ 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc, 0x88cd,
+ 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7, 0x88ef,
+ 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d, 0x890e,
+ 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c, 0x8920,
+ 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939,
+ 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894f,
+ 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962, 0x8963,
+ 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
+ /* 0x5d */
+ 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995,
+ 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5,
+ 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
+ 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9,
+ 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12,
+ 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b,
+ 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43,
+ 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76,
+ 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83,
+ 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99,
+ 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
+ /* 0x5e */
+ 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9,
+ 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf,
+ 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05,
+ 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d,
+ 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46,
+ 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63,
+ 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84,
+ 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e,
+ 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49,
+ 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b,
+ 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d,
+ 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
+ /* 0x5f */
+ 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b, 0x8c9c,
+ 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf,
+ 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec, 0x8cef,
+ 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff, 0x8d01,
+ 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69, 0x8d6c,
+ 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90, 0x8d91,
+ 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac, 0x8daf,
+ 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6,
+ 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7,
+ 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc, 0x8df1,
+ 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06, 0x8e0b,
+ 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
+ /* 0x60 */
+ 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37, 0x8e38,
+ 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e, 0x8e4f,
+ 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62, 0x8e69,
+ 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a, 0x8e7b,
+ 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a, 0x8e9b,
+ 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae, 0x8eb3,
+ 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4, 0x8ec7,
+ 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0, 0x8ef1,
+ 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07, 0x8f08,
+ 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20, 0x8f21,
+ 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f34,
+ 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
+ /* 0x61 */
+ 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
+ 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4,
+ 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1,
+ 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5,
+ 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6,
+ 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b,
+ 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034,
+ 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062,
+ 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
+ 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099,
+ 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3,
+ 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
+ /* 0x62 */
+ 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9,
+ 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef,
+ 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106,
+ 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a,
+ 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129,
+ 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a,
+ 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157,
+ 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174,
+ 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a,
+ 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1,
+ 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2,
+ 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
+ /* 0x63 */
+ 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9, 0x91da,
+ 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed, 0x91ee,
+ 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd, 0x9200,
+ 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a, 0x920c,
+ 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d, 0x9223,
+ 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230, 0x9233,
+ 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e, 0x9240,
+ 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e, 0x924f,
+ 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261, 0x9265,
+ 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f, 0x9288,
+ 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
+ /* 0x64 */
+ 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8, 0x92ab,
+ 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc, 0x92bd,
+ 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6, 0x92c7,
+ 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3, 0x92d5,
+ 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0, 0x92e1,
+ 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0, 0x92f9,
+ 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311, 0x9314,
+ 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324, 0x9325,
+ 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347,
+ 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358,
+ 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a, 0x936d,
+ 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
+ /* 0x65 */
+ 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a,
+ 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e,
+ 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5,
+ 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7,
+ 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc,
+ 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8,
+ 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409,
+ 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e,
+ 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d,
+ 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c,
+ 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f,
+ 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
+ /* 0x66 */
+ 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e,
+ 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6,
+ 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0,
+ 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df,
+ 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625,
+ 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a,
+ 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658,
+ 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681,
+ 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d,
+ 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3,
+ 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de,
+ 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
+ /* 0x67 */
+ 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721, 0x9722,
+ 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a, 0x974e,
+ 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763, 0x9767,
+ 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b, 0x977d,
+ 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a,
+ 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2, 0x97b5,
+ 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf, 0x97c1,
+ 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd, 0x97ce,
+ 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd, 0x97de,
+ 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4, 0x97f7,
+ 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e, 0x9814,
+ 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
+ /* 0x68 */
+ 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825,
+ 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853, 0x9856,
+ 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866, 0x986a,
+ 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7, 0x98b8,
+ 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc, 0x98e1,
+ 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6, 0x9902,
+ 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a, 0x991b,
+ 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931, 0x9932,
+ 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c, 0x9940,
+ 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954, 0x9958,
+ 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b, 0x999d,
+ 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
+ /* 0x69 */
+ 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4,
+ 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec,
+ 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03,
+ 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20,
+ 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35,
+ 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c,
+ 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae,
+ 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe,
+ 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2,
+ 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5,
+ 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa,
+ 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
+ /* 0x6a */
+ 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e,
+ 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26,
+ 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a,
+ 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b,
+ 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b,
+ 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79,
+ 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a,
+ 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e,
+ 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7,
+ 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8,
+ 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7,
+ 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
+ /* 0x6b */
+ 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b, 0x9c0f,
+ 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22,
+ 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31, 0x9c35,
+ 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45, 0x9c49,
+ 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56, 0x9c58,
+ 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a, 0x9c5c,
+ 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77, 0x9c7b,
+ 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11, 0x9d17,
+ 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32, 0x9d33,
+ 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43, 0x9d47,
+ 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65, 0x9d69,
+ 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
+ /* 0x6c */
+ 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d, 0x9d8e,
+ 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1, 0x9daa,
+ 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf, 0x9dc3,
+ 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dda,
+ 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb, 0x9dee,
+ 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07, 0x9e0e,
+ 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c, 0x9e1d,
+ 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84, 0x9e85,
+ 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e, 0x9ea4,
+ 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4, 0x9eb5,
+ 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7, 0x9eec,
+ 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
+ /* 0x6d */
+ 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11,
+ 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f,
+ 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34,
+ 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43,
+ 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57,
+ 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e,
+ 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f,
+ 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1,
+ 0x9fa2, 0x9fa3, 0x9fa5,
+};
+
+static int
+jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 470) {
+ if (i < 175)
+ wc = jisx0212_2uni_page22[i-94];
+ } else if (i < 752) {
+ if (i < 658)
+ wc = jisx0212_2uni_page26[i-470];
+ } else if (i < 1410) {
+ if (i < 1027)
+ wc = jisx0212_2uni_page29[i-752];
+ } else {
+ if (i < 7211)
+ wc = jisx0212_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short jisx0212_2charset[6067] = {
+ 0x2237, 0x2242, 0x2270, 0x2243, 0x226d, 0x226c, 0x226e, 0x2234,
+ 0x2231, 0x226b, 0x2244, 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23,
+ 0x2a29, 0x2921, 0x2a2e, 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40,
+ 0x2a3f, 0x2a42, 0x2a41, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58,
+ 0x2a53, 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930,
+ 0x294e, 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941,
+ 0x2b2e, 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42,
+ 0x2b41, 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53,
+ 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
+ 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
+ 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
+ 0x2922, 0x2942, 0x2a37, 0x2b37, 0x2a36, 0x2b36, 0x2a38, 0x2b38,
+ 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b, 0x2a3d, 0x2b3d,
+ 0x2a3c, 0x2a3e, 0x2b3e, 0x2924, 0x2944, 0x2a47, 0x2b47, 0x2a45,
+ 0x2b45, 0x2a46, 0x2b46, 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48,
+ 0x2b48, 0x2a49, 0x2b49, 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c,
+ 0x2a4b, 0x2b4b, 0x2929, 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d,
+ 0x2a4f, 0x2b4f, 0x2a4e, 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57,
+ 0x2b57, 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b,
+ 0x2b5b, 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f,
+ 0x2b5f, 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f,
+ 0x294f, 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b,
+ 0x2b6b, 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74,
+ 0x2b74, 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76,
+ 0x2a26, 0x2b26, 0x2a43, 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67,
+ 0x2a70, 0x2b70, 0x2a6d, 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e,
+ 0x2b39, 0x2230, 0x222f, 0x2232, 0x2236, 0x2235, 0x2233, 0x2238,
+ 0x2239, 0x2661, 0x2662, 0x2663, 0x2664, 0x2667, 0x2669, 0x266c,
+ 0x2676, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674, 0x267b,
+ 0x2678, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x2742, 0x2743,
+ 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b,
+ 0x274c, 0x274d, 0x274e, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776,
+ 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e,
+ 0x2271, 0x226f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
+ 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
+ 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
+ 0x303f, 0x3040, 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,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+ 0x3070, 0x305f, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
+ 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, 0x3176, 0x315f,
+ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
+ 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+ 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 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, 0x3244, 0x3245, 0x3251, 0x3246, 0x3247, 0x3248, 0x3249,
+ 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 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, 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, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
+ 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
+ 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
+ 0x3438, 0x3437, 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,
+ 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, 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, 0x3670, 0x3671, 0x366e, 0x366f, 0x3672,
+ 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
+ 0x367b, 0x367d, 0x367e, 0x367c, 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, 0x3760, 0x3758, 0x3759, 0x375a, 0x375b,
+ 0x375c, 0x375d, 0x375e, 0x375f, 0x3761, 0x3762, 0x3763, 0x3764,
+ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
+ 0x376d, 0x377e, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773,
+ 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b,
+ 0x377c, 0x377d, 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,
+ 0x3850, 0x3851, 0x384f, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
+ 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
+ 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3867,
+ 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f,
+ 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877,
+ 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 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, 0x3a21, 0x3a22, 0x3a23,
+ 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b,
+ 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33, 0x3a34,
+ 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a32, 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, 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, 0x3b3d, 0x3b3c,
+ 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45,
+ 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b46, 0x3b4b, 0x3b4c, 0x3b4d,
+ 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b57, 0x3b55,
+ 0x3b54, 0x3b56, 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, 0x6674, 0x3b73, 0x3b74,
+ 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b7a, 0x3b79, 0x3b7b, 0x3b7c,
+ 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
+ 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2e, 0x3c2d,
+ 0x3c2f, 0x3c30, 0x3c31, 0x3c34, 0x3c32, 0x3c33, 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, 0x3c52, 0x3c51, 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,
+ 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
+ 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d32,
+ 0x3d30, 0x3d31, 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, 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, 0x3e7e, 0x3e7c, 0x3e7d, 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, 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,
+ 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, 0x4221, 0x4222,
+ 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
+ 0x422b, 0x422c, 0x422d, 0x422e, 0x4230, 0x422f, 0x4231, 0x4232,
+ 0x4233, 0x4234, 0x4235, 0x4237, 0x4236, 0x4238, 0x4239, 0x423a,
+ 0x423b, 0x423c, 0x423d, 0x423e, 0x4240, 0x4241, 0x4242, 0x4244,
+ 0x4245, 0x4247, 0x4248, 0x4249, 0x424a, 0x424c, 0x4243, 0x4246,
+ 0x424b, 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, 0x423f, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
+ 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
+ 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
+ 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
+ 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
+ 0x4335, 0x4336, 0x4337, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d,
+ 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345,
+ 0x4346, 0x4347, 0x4348, 0x4338, 0x434a, 0x434b, 0x434c, 0x434d,
+ 0x434f, 0x434e, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
+ 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x4349, 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, 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,
+ 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, 0x454d, 0x454c, 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, 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, 0x4736, 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, 0x4721, 0x4722, 0x4723,
+ 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b,
+ 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733,
+ 0x4734, 0x4735, 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, 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, 0x4853, 0x484d,
+ 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 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,
+ 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, 0x4941, 0x493d, 0x493e, 0x493f,
+ 0x4940, 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, 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, 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, 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,
+ 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, 0x4e21, 0x4e22,
+ 0x4e24, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29, 0x4e23, 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, 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, 0x4f74, 0x4f75,
+ 0x4f76, 0x4f73, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c,
+ 0x4f7d, 0x4f7e, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026,
+ 0x5027, 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502e, 0x502f,
+ 0x5030, 0x5031, 0x502d, 0x5032, 0x5033, 0x5034, 0x5035, 0x5037,
+ 0x5038, 0x5039, 0x503a, 0x503b, 0x5036, 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,
+ 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, 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, 0x5276, 0x5277, 0x5278, 0x5275, 0x5279, 0x527a,
+ 0x527b, 0x527c, 0x527d, 0x527e, 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, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426,
+ 0x5427, 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e,
+ 0x542f, 0x5430, 0x5431, 0x5432, 0x5434, 0x5435, 0x5436, 0x5437,
+ 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x5433,
+ 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, 0x546c, 0x546b, 0x546d, 0x546e,
+ 0x546f, 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476,
+ 0x5477, 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e,
+ 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, 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, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b,
+ 0x5646, 0x564c, 0x564d, 0x564e, 0x564f, 0x5650, 0x5651, 0x5652,
+ 0x5653, 0x5654, 0x5656, 0x5657, 0x5658, 0x5655, 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, 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, 0x5764, 0x5765,
+ 0x5766, 0x5767, 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d,
+ 0x576e, 0x576f, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
+ 0x5776, 0x5777, 0x5778, 0x5779, 0x583e, 0x5763, 0x577a, 0x577b,
+ 0x577c, 0x577d, 0x577e, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825,
+ 0x5826, 0x5827, 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d,
+ 0x582e, 0x582f, 0x5830, 0x5831, 0x5832, 0x5833, 0x584c, 0x5834,
+ 0x5835, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c,
+ 0x583d, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845,
+ 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 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,
+ 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, 0x5928,
+ 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, 0x5930, 0x5931,
+ 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, 0x5938, 0x5939,
+ 0x593a, 0x593b, 0x593c, 0x5929, 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, 0x5974, 0x5967,
+ 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+ 0x5970, 0x5971, 0x5972, 0x5973, 0x5975, 0x5976, 0x5977, 0x5978,
+ 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x5a21, 0x5a22,
+ 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29, 0x5a2a,
+ 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a32,
+ 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x3866, 0x5a37, 0x5a38, 0x5a39,
+ 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a40, 0x5a41,
+ 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49,
+ 0x5a4a, 0x5a4b, 0x5a6d, 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, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71,
+ 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, 0x5a78, 0x5a79,
+ 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 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, 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b6f,
+ 0x5b74, 0x5b75, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7a, 0x5b7b,
+ 0x5b7c, 0x5b7d, 0x5b7e, 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, 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, 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,
+ 0x5e3f, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e40, 0x5e41,
+ 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49,
+ 0x5e4e, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 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, 0x5e72, 0x5e70,
+ 0x5e71, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79,
+ 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5f21, 0x5f22, 0x5f23,
+ 0x5f24, 0x5f25, 0x5f26, 0x5f27, 0x5f28, 0x5f29, 0x5f2a, 0x5f2b,
+ 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, 0x5f30, 0x5f32, 0x5f31, 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, 0x5f6f, 0x5f5e, 0x5f5f, 0x5f60, 0x5f61, 0x5f62,
+ 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69, 0x5f6a,
+ 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f70, 0x5f71, 0x5f72, 0x5f73,
+ 0x5f74, 0x5f75, 0x5f76, 0x5f77, 0x5f78, 0x5f79, 0x5f7a, 0x5f7b,
+ 0x5f7c, 0x5f7d, 0x5f7e, 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,
+ 0x6064, 0x605e, 0x605f, 0x6060, 0x6061, 0x6062, 0x6063, 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, 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, 0x6154, 0x6155, 0x6156, 0x6153, 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, 0x617d, 0x617e, 0x6221, 0x6222,
+ 0x6223, 0x6224, 0x617c, 0x622d, 0x6225, 0x6226, 0x6227, 0x6228,
+ 0x6229, 0x622a, 0x622b, 0x622c, 0x622f, 0x6230, 0x6231, 0x6232,
+ 0x622e, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, 0x6238, 0x6239,
+ 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241,
+ 0x6242, 0x6243, 0x6245, 0x6246, 0x6244, 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, 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, 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, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527,
+ 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f,
+ 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x653b, 0x6536,
+ 0x6537, 0x6538, 0x6539, 0x653a, 0x653c, 0x653d, 0x653e, 0x653f,
+ 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547,
+ 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654f, 0x6550,
+ 0x654e, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557,
+ 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f,
+ 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6568,
+ 0x6567, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f,
+ 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577,
+ 0x6578, 0x6579, 0x657a, 0x657c, 0x657b, 0x657d, 0x657e, 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, 0x6675, 0x6676, 0x6677, 0x6678, 0x6679, 0x667a,
+ 0x667b, 0x667c, 0x667d, 0x667e, 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, 0x676a, 0x6767, 0x6768, 0x6769, 0x676b, 0x676c,
+ 0x676d, 0x676e, 0x676f, 0x6770, 0x6771, 0x6772, 0x6773, 0x6774,
+ 0x6776, 0x6777, 0x6778, 0x6779, 0x6775, 0x677a, 0x677b, 0x677c,
+ 0x677d, 0x6828, 0x677e, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825,
+ 0x6826, 0x6827, 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,
+ 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, 0x694c, 0x694d, 0x694b, 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, 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, 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, 0x6b50, 0x6b4a, 0x6b4b,
+ 0x6b4c, 0x6b4d, 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x6b53, 0x6b54,
+ 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c,
+ 0x6b5e, 0x6b5d, 0x6b5f, 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64,
+ 0x6b65, 0x6b66, 0x6b67, 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6d,
+ 0x6b6e, 0x6b6f, 0x6b6c, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74,
+ 0x6b76, 0x6b75, 0x6b77, 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c,
+ 0x6b7d, 0x6b7e, 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, 0x6c4e, 0x6c4f,
+ 0x6c4d, 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,
+ 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,
+};
+
+static const Summary16 jisx0212_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x4000 },
+ { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0xc652 }, { 8, 0x8500 },
+ { 11, 0xffff }, { 27, 0xff7e }, { 41, 0xffff }, { 57, 0xff7f },
+ /* 0x0100 */
+ { 72, 0xffff }, { 88, 0xffcf }, { 102, 0xcff7 }, { 115, 0xffff },
+ { 131, 0x3fff }, { 145, 0xffff }, { 161, 0xffff }, { 177, 0x7fff },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0xe000 }, { 195, 0x1fff }, { 208, 0x0000 }, { 208, 0x0020 },
+ /* 0x0200 */
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0080 }, { 210, 0x2f00 }, { 215, 0x0000 }, { 215, 0x0000 },
+ /* 0x0300 */
+ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
+ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
+ { 215, 0xd770 }, { 224, 0x0001 }, { 225, 0xfc00 }, { 231, 0x0001 },
+ { 232, 0x7c04 }, { 238, 0x0000 }, { 238, 0x0000 }, { 238, 0x0000 },
+ /* 0x0400 */
+ { 238, 0xdffc }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 },
+ { 251, 0x0000 }, { 251, 0xdffc },
+};
+static const Summary16 jisx0212_uni2indx_page21[3] = {
+ /* 0x2100 */
+ { 264, 0x0000 }, { 264, 0x0040 }, { 265, 0x0004 },
+};
+static const Summary16 jisx0212_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 266, 0x1034 }, { 270, 0x8004 }, { 272, 0xc918 }, { 278, 0x0021 },
+ { 280, 0x0093 }, { 284, 0x1402 }, { 287, 0x0308 }, { 290, 0x8230 },
+ { 294, 0x2000 }, { 295, 0x20c0 }, { 298, 0x8000 }, { 299, 0x0200 },
+ { 300, 0x0008 }, { 301, 0x0c01 }, { 304, 0x8107 }, { 309, 0xe02a },
+ /* 0x4f00 */
+ { 315, 0x190d }, { 321, 0x02e4 }, { 326, 0x4000 }, { 327, 0x4aaa },
+ { 334, 0x1b05 }, { 340, 0x8154 }, { 345, 0x5409 }, { 350, 0x6782 },
+ { 357, 0x5636 }, { 365, 0xc69d }, { 374, 0x0000 }, { 374, 0x7a84 },
+ { 381, 0xbb63 }, { 391, 0x1004 }, { 393, 0x0005 }, { 395, 0xb005 },
+ /* 0x5000 */
+ { 400, 0x5493 }, { 407, 0x7989 }, { 415, 0x4084 }, { 418, 0x082d },
+ { 423, 0x5467 }, { 431, 0x828e }, { 437, 0x24cd }, { 444, 0x0003 },
+ { 446, 0xc45a }, { 453, 0xd85d }, { 462, 0x8407 }, { 467, 0x2601 },
+ { 471, 0x5099 }, { 477, 0xb119 }, { 484, 0x8354 }, { 490, 0x4446 },
+ /* 0x5100 */
+ { 495, 0x79c8 }, { 503, 0x7a81 }, { 510, 0xb188 }, { 516, 0x033a },
+ { 522, 0x8404 }, { 525, 0x81a8 }, { 530, 0x0050 }, { 532, 0x4000 },
+ { 533, 0x4818 }, { 537, 0x2100 }, { 539, 0x200a }, { 542, 0xd500 },
+ { 547, 0x8104 }, { 550, 0x412e }, { 556, 0x4024 }, { 559, 0x009c },
+ /* 0x5200 */
+ { 563, 0x0026 }, { 566, 0x016c }, { 571, 0x0104 }, { 573, 0x1026 },
+ { 577, 0x0220 }, { 579, 0x95a0 }, { 585, 0x4043 }, { 589, 0x0380 },
+ { 592, 0x1425 }, { 597, 0x15e8 }, { 604, 0x80f0 }, { 609, 0x2dc1 },
+ { 616, 0x9151 }, { 622, 0x1852 }, { 627, 0x1722 }, { 633, 0x00d3 },
+ /* 0x5300 */
+ { 638, 0x1c09 }, { 643, 0xd90a }, { 650, 0x3ba0 }, { 657, 0x7025 },
+ { 663, 0x1804 }, { 666, 0x0a00 }, { 668, 0x302a }, { 673, 0x4204 },
+ { 676, 0x4188 }, { 680, 0x2218 }, { 684, 0x8c12 }, { 689, 0x25b4 },
+ { 696, 0x8021 }, { 699, 0x642c }, { 705, 0x00c1 }, { 708, 0x0020 },
+ /* 0x5400 */
+ { 709, 0x0004 }, { 710, 0x0408 }, { 712, 0x8582 }, { 717, 0x0032 },
+ { 720, 0xa098 }, { 725, 0x4000 }, { 726, 0x6ad4 }, { 734, 0x8010 },
+ { 736, 0x232a }, { 742, 0x9062 }, { 747, 0x66c2 }, { 754, 0x8e82 },
+ { 760, 0x6440 }, { 764, 0x0000 }, { 764, 0x9401 }, { 768, 0xd040 },
+ /* 0x5500 */
+ { 772, 0x7323 }, { 780, 0x0020 }, { 781, 0x0c00 }, { 783, 0x3864 },
+ { 789, 0x2682 }, { 794, 0x4d03 }, { 800, 0x0053 }, { 804, 0x8000 },
+ { 805, 0xc146 }, { 811, 0x009e }, { 816, 0x2018 }, { 819, 0x8004 },
+ { 821, 0x5a4a }, { 828, 0x498e }, { 835, 0x0204 }, { 837, 0x8040 },
+ /* 0x5600 */
+ { 839, 0xe520 }, { 845, 0x0207 }, { 849, 0x1000 }, { 850, 0xbaa9 },
+ { 859, 0xaa5b }, { 868, 0x4010 }, { 870, 0xa24f }, { 878, 0x0026 },
+ { 881, 0x1930 }, { 886, 0xe620 }, { 892, 0x3bc0 }, { 899, 0x408a },
+ { 903, 0xbe20 }, { 910, 0xb201 }, { 915, 0x29f2 }, { 923, 0x00c2 },
+ /* 0x5700 */
+ { 926, 0x1486 }, { 931, 0x2c22 }, { 936, 0xd63d }, { 946, 0xe018 },
+ { 951, 0x3060 }, { 955, 0x0004 }, { 956, 0xe9a4 }, { 964, 0x5ebb },
+ { 975, 0x100a }, { 978, 0xf6b0 }, { 987, 0x1382 }, { 992, 0x2100 },
+ { 994, 0x9180 }, { 998, 0x6020 }, { 1001, 0x22d2 }, { 1007, 0xe161 },
+ /* 0x5800 */
+ { 1014, 0x3318 }, { 1020, 0xc800 }, { 1023, 0x20c1 }, { 1027, 0x8204 },
+ { 1030, 0xb200 }, { 1034, 0x8021 }, { 1037, 0x0192 }, { 1041, 0x9100 },
+ { 1044, 0xb783 }, { 1053, 0x2051 }, { 1057, 0x0247 }, { 1062, 0x1006 },
+ { 1065, 0x6114 }, { 1070, 0x2455 }, { 1076, 0x0206 }, { 1079, 0x0008 },
+ /* 0x5900 */
+ { 1080, 0x1860 }, { 1084, 0x201c }, { 1088, 0x811a }, { 1093, 0x8069 },
+ { 1098, 0x0048 }, { 1100, 0xea0c }, { 1107, 0xa80a }, { 1112, 0x1a64 },
+ { 1118, 0x5800 }, { 1121, 0x80a4 }, { 1125, 0xe090 }, { 1130, 0x1489 },
+ { 1135, 0x251a }, { 1141, 0xe004 }, { 1145, 0xc098 }, { 1150, 0x0096 },
+ /* 0x5a00 */
+ { 1154, 0x7011 }, { 1159, 0x400c }, { 1162, 0x2598 }, { 1168, 0x0001 },
+ { 1169, 0x11b0 }, { 1174, 0x4021 }, { 1177, 0x20a8 }, { 1181, 0x4c80 },
+ { 1185, 0x0800 }, { 1186, 0xd249 }, { 1193, 0x1085 }, { 1197, 0x8d2e },
+ { 1205, 0x8150 }, { 1209, 0x1400 }, { 1211, 0x4421 }, { 1215, 0x2060 },
+ /* 0x5b00 */
+ { 1218, 0x0103 }, { 1221, 0x2a80 }, { 1225, 0x2022 }, { 1228, 0x0110 },
+ { 1230, 0x1802 }, { 1233, 0x4044 }, { 1236, 0xc100 }, { 1239, 0xf000 },
+ { 1243, 0x4452 }, { 1248, 0x005b }, { 1253, 0xb300 }, { 1258, 0x1486 },
+ { 1263, 0xa003 }, { 1267, 0x07c0 }, { 1272, 0x8001 }, { 1274, 0x2012 },
+ /* 0x5c00 */
+ { 1277, 0x1000 }, { 1278, 0xc080 }, { 1281, 0x5a48 }, { 1287, 0x0065 },
+ { 1291, 0x0000 }, { 1291, 0x1600 }, { 1294, 0x238c }, { 1300, 0x3c31 },
+ { 1307, 0x8580 }, { 1311, 0xa004 }, { 1314, 0x044d }, { 1319, 0x0434 },
+ { 1323, 0x0a00 }, { 1325, 0x2084 }, { 1328, 0x4000 }, { 1329, 0x0016 },
+ /* 0x5d00 */
+ { 1332, 0x2042 }, { 1335, 0x0004 }, { 1336, 0x08d8 }, { 1341, 0xa212 },
+ { 1346, 0x054c }, { 1351, 0x8222 }, { 1355, 0x2417 }, { 1361, 0xc601 },
+ { 1366, 0x050a }, { 1370, 0x8a3c }, { 1377, 0x0881 }, { 1380, 0x0315 },
+ { 1385, 0x4888 }, { 1389, 0x0301 }, { 1392, 0x0211 }, { 1395, 0x0300 },
+ /* 0x5e00 */
+ { 1397, 0x2081 }, { 1400, 0x8134 }, { 1405, 0x4101 }, { 1408, 0x4024 },
+ { 1411, 0x0a00 }, { 1413, 0x5943 }, { 1420, 0x7d00 }, { 1426, 0x0001 },
+ { 1427, 0x4801 }, { 1430, 0x0000 }, { 1430, 0x1534 }, { 1436, 0xe00a },
+ { 1441, 0x5840 }, { 1445, 0x5036 }, { 1451, 0x0820 }, { 1453, 0x0000 },
+ /* 0x5f00 */
+ { 1453, 0x41c4 }, { 1458, 0x3200 }, { 1461, 0x591e }, { 1469, 0xa851 },
+ { 1475, 0x20b1 }, { 1480, 0x0911 }, { 1484, 0x8099 }, { 1489, 0x6534 },
+ { 1496, 0xa200 }, { 1499, 0x3040 }, { 1502, 0x9894 }, { 1508, 0x0103 },
+ { 1511, 0x0b90 }, { 1516, 0x401f }, { 1522, 0xf706 }, { 1531, 0x144c },
+ /* 0x6000 */
+ { 1536, 0x2480 }, { 1539, 0x8598 }, { 1545, 0x2010 }, { 1547, 0x0028 },
+ { 1549, 0x1381 }, { 1554, 0x20d2 }, { 1559, 0x0082 }, { 1561, 0xc002 },
+ { 1564, 0x4544 }, { 1569, 0x612a }, { 1575, 0x0134 }, { 1579, 0x4883 },
+ { 1584, 0xcf14 }, { 1592, 0x6a30 }, { 1598, 0x0024 }, { 1600, 0x3124 },
+ /* 0x6100 */
+ { 1605, 0x1484 }, { 1609, 0x52df }, { 1619, 0x0c04 }, { 1622, 0x02e3 },
+ { 1628, 0x0262 }, { 1632, 0x4000 }, { 1633, 0x1001 }, { 1635, 0x9904 },
+ { 1640, 0x281b }, { 1646, 0xb18c }, { 1653, 0x2521 }, { 1658, 0x1300 },
+ { 1661, 0xc007 }, { 1666, 0xf020 }, { 1671, 0xb2a6 }, { 1679, 0x0000 },
+ /* 0x6200 */
+ { 1679, 0x009a }, { 1683, 0x1028 }, { 1686, 0x0a8d }, { 1692, 0x2200 },
+ { 1694, 0x105c }, { 1699, 0x1457 }, { 1706, 0xa010 }, { 1709, 0x2408 },
+ { 1712, 0xe000 }, { 1715, 0x0001 }, { 1716, 0x0140 }, { 1718, 0xc4c8 },
+ { 1724, 0x4010 }, { 1726, 0x0460 }, { 1729, 0x0400 }, { 1730, 0x3014 },
+ /* 0x6300 */
+ { 1734, 0x2c18 }, { 1739, 0x0149 }, { 1743, 0x2600 }, { 1746, 0x1260 },
+ { 1750, 0x4c5e }, { 1758, 0x091c }, { 1763, 0x3060 }, { 1767, 0xb132 },
+ { 1774, 0x0494 }, { 1778, 0x4631 }, { 1784, 0xe050 }, { 1789, 0x2000 },
+ { 1790, 0x4122 }, { 1794, 0x103a }, { 1799, 0x1421 }, { 1803, 0x032c },
+ /* 0x6400 */
+ { 1808, 0x0600 }, { 1810, 0x4115 }, { 1815, 0x8635 }, { 1822, 0xa021 },
+ { 1826, 0x8800 }, { 1828, 0xbc1e }, { 1837, 0x200b }, { 1841, 0x2818 },
+ { 1845, 0x80a0 }, { 1848, 0xab03 }, { 1855, 0x114a }, { 1860, 0xe008 },
+ { 1864, 0x5e10 }, { 1870, 0x00a3 }, { 1874, 0x2630 }, { 1879, 0x88a1 },
+ /* 0x6500 */
+ { 1884, 0x8712 }, { 1890, 0xca58 }, { 1897, 0x4244 }, { 1901, 0x3402 },
+ { 1905, 0x0288 }, { 1908, 0x8015 }, { 1912, 0x0881 }, { 1915, 0x2400 },
+ { 1917, 0x0422 }, { 1920, 0x2124 }, { 1924, 0x4049 }, { 1928, 0x801c },
+ { 1932, 0x4304 }, { 1936, 0x8151 }, { 1941, 0x0000 }, { 1941, 0xc235 },
+ /* 0x6600 */
+ { 1948, 0x2311 }, { 1953, 0x6066 }, { 1959, 0x5e5e }, { 1969, 0x028b },
+ { 1974, 0x5461 }, { 1980, 0x1b82 }, { 1986, 0x1c03 }, { 1991, 0xdba8 },
+ { 2000, 0x3801 }, { 2004, 0x9e05 }, { 2011, 0x2011 }, { 2014, 0x8826 },
+ { 2019, 0xd10d }, { 2026, 0x8810 }, { 2029, 0x5900 }, { 2033, 0x0c00 },
+ /* 0x6700 */
+ { 2035, 0x40a0 }, { 2038, 0x1208 }, { 2041, 0x0005 }, { 2043, 0x4008 },
+ { 2045, 0x11a0 }, { 2049, 0x2030 }, { 2052, 0x5040 }, { 2055, 0x0850 },
+ { 2058, 0xc012 }, { 2062, 0x0b4a }, { 2068, 0x0000 }, { 2068, 0x3827 },
+ { 2075, 0x032d }, { 2081, 0x1284 }, { 2085, 0x0042 }, { 2087, 0x02c5 },
+ /* 0x6800 */
+ { 2092, 0x0000 }, { 2092, 0xa210 }, { 2096, 0xb180 }, { 2101, 0x880b },
+ { 2106, 0x1430 }, { 2110, 0x09a4 }, { 2115, 0xc800 }, { 2118, 0x1e27 },
+ { 2126, 0x0154 }, { 2130, 0x1540 }, { 2134, 0x462a }, { 2140, 0x0804 },
+ { 2142, 0x9120 }, { 2146, 0x324b }, { 2153, 0x3d20 }, { 2159, 0x3863 },
+ /* 0x6900 */
+ { 2166, 0x0640 }, { 2169, 0x00cb }, { 2174, 0x0000 }, { 2174, 0x092a },
+ { 2179, 0x4224 }, { 2183, 0x0880 }, { 2185, 0x1378 }, { 2192, 0x8c07 },
+ { 2198, 0x2001 }, { 2200, 0x0144 }, { 2203, 0xa962 }, { 2210, 0x1580 },
+ { 2214, 0x0120 }, { 2216, 0x00c2 }, { 2219, 0xc024 }, { 2223, 0x402a },
+ /* 0x6a00 */
+ { 2227, 0x800b }, { 2231, 0x2422 }, { 2235, 0x0111 }, { 2238, 0xc895 },
+ { 2245, 0x4660 }, { 2250, 0x0867 }, { 2256, 0x0490 }, { 2259, 0x400a },
+ { 2262, 0x0aca }, { 2268, 0xe802 }, { 2273, 0x8820 }, { 2276, 0xe013 },
+ { 2282, 0x1340 }, { 2286, 0x3071 }, { 2292, 0x1090 }, { 2295, 0x3007 },
+ /* 0x6b00 */
+ { 2300, 0x82cc }, { 2306, 0x4883 }, { 2311, 0x9910 }, { 2316, 0x8860 },
+ { 2320, 0x2440 }, { 2323, 0x2144 }, { 2327, 0x4881 }, { 2331, 0x6021 },
+ { 2335, 0x0024 }, { 2337, 0x8880 }, { 2340, 0x730d }, { 2348, 0x6301 },
+ { 2353, 0x1218 }, { 2357, 0x0440 }, { 2359, 0x40ca }, { 2364, 0x8282 },
+ /* 0x6c00 */
+ { 2368, 0x6234 }, { 2374, 0x8205 }, { 2378, 0x51c0 }, { 2383, 0x8c68 },
+ { 2389, 0xac00 }, { 2393, 0x1a14 }, { 2398, 0xa880 }, { 2402, 0x0b50 },
+ { 2407, 0x02e0 }, { 2411, 0x91b0 }, { 2417, 0x0000 }, { 2417, 0x0015 },
+ { 2420, 0xa044 }, { 2424, 0x1457 }, { 2431, 0x5a81 }, { 2437, 0x0014 },
+ /* 0x6d00 */
+ { 2439, 0xc490 }, { 2444, 0x040a }, { 2447, 0xc1c0 }, { 2452, 0x9202 },
+ { 2456, 0x0000 }, { 2456, 0xc080 }, { 2459, 0x80a2 }, { 2463, 0x1001 },
+ { 2465, 0x0084 }, { 2467, 0x01d6 }, { 2473, 0x1400 }, { 2475, 0xa290 },
+ { 2480, 0xc510 }, { 2485, 0xa840 }, { 2489, 0x8225 }, { 2494, 0x1051 },
+ /* 0x6e00 */
+ { 2498, 0x0011 }, { 2500, 0x4000 }, { 2501, 0x0084 }, { 2503, 0x1a44 },
+ { 2508, 0x8b30 }, { 2514, 0x709e }, { 2522, 0x010c }, { 2525, 0x2808 },
+ { 2528, 0x2000 }, { 2529, 0x0208 }, { 2531, 0x6081 }, { 2535, 0x880a },
+ { 2539, 0xe58b }, { 2548, 0x0000 }, { 2548, 0x6800 }, { 2551, 0x2a00 },
+ /* 0x6f00 */
+ { 2554, 0x3510 }, { 2559, 0x0d40 }, { 2563, 0xa640 }, { 2568, 0x1849 },
+ { 2573, 0x8000 }, { 2574, 0x668e }, { 2582, 0x1106 }, { 2586, 0x6000 },
+ { 2588, 0x3988 }, { 2594, 0x845d }, { 2601, 0xc1e1 }, { 2608, 0x1061 },
+ { 2612, 0x05a0 }, { 2616, 0x4400 }, { 2618, 0x0300 }, { 2620, 0x3221 },
+ /* 0x7000 */
+ { 2625, 0x20e1 }, { 2630, 0x0080 }, { 2631, 0x8009 }, { 2634, 0x1290 },
+ { 2638, 0x4f18 }, { 2645, 0x6030 }, { 2649, 0x5030 }, { 2653, 0x4060 },
+ { 2656, 0x0062 }, { 2659, 0x09f0 }, { 2665, 0x0810 }, { 2667, 0x0093 },
+ { 2671, 0x0400 }, { 2672, 0x117a }, { 2679, 0x0010 }, { 2680, 0x0400 },
+ /* 0x7100 */
+ { 2681, 0x98f8 }, { 2689, 0x4000 }, { 2690, 0xa801 }, { 2694, 0x0103 },
+ { 2697, 0x0ce2 }, { 2703, 0x5485 }, { 2709, 0x0101 }, { 2711, 0x0200 },
+ { 2712, 0x10a1 }, { 2716, 0x0c04 }, { 2719, 0x8005 }, { 2722, 0x840d },
+ { 2727, 0x1813 }, { 2732, 0x1648 }, { 2737, 0x0000 }, { 2737, 0x4100 },
+ /* 0x7200 */
+ { 2739, 0x0381 }, { 2743, 0xa488 }, { 2748, 0x8810 }, { 2751, 0x0310 },
+ { 2754, 0xc02e }, { 2760, 0x5469 }, { 2767, 0xc909 }, { 2773, 0x9982 },
+ { 2779, 0x6210 }, { 2783, 0x0808 }, { 2785, 0x6100 }, { 2788, 0x4012 },
+ { 2791, 0x1282 }, { 2795, 0x8160 }, { 2799, 0x0020 }, { 2800, 0x4c18 },
+ /* 0x7300 */
+ { 2805, 0x28b4 }, { 2811, 0x430c }, { 2816, 0x1194 }, { 2821, 0x2c26 },
+ { 2827, 0x2008 }, { 2829, 0xe145 }, { 2836, 0xdac1 }, { 2844, 0x1282 },
+ { 2848, 0x406b }, { 2854, 0xd1a9 }, { 2862, 0x2c65 }, { 2869, 0xb2a0 },
+ { 2875, 0x9a60 }, { 2881, 0x224c }, { 2886, 0x02ca }, { 2891, 0xaeb0 },
+ /* 0x7400 */
+ { 2899, 0x0493 }, { 2904, 0x0c02 }, { 2907, 0xff50 }, { 2917, 0x0203 },
+ { 2920, 0x28d9 }, { 2927, 0x2086 }, { 2931, 0x69c4 }, { 2938, 0x0006 },
+ { 2940, 0x82e3 }, { 2947, 0x9707 }, { 2955, 0xcf4b }, { 2965, 0x8a26 },
+ { 2971, 0x1300 }, { 2974, 0xcd09 }, { 2981, 0x8d10 }, { 2986, 0x9c10 },
+ /* 0x7500 */
+ { 2991, 0x0040 }, { 2992, 0x00c4 }, { 2995, 0x8693 }, { 3002, 0xe240 },
+ { 3007, 0x4189 }, { 3012, 0xc085 }, { 3017, 0x8002 }, { 3019, 0x7e02 },
+ { 3026, 0x0022 }, { 3028, 0x122d }, { 3034, 0x0014 }, { 3036, 0x8410 },
+ { 3039, 0xd053 }, { 3046, 0x9080 }, { 3049, 0xd093 }, { 3056, 0x0202 },
+ /* 0x7600 */
+ { 3058, 0x959d }, { 3067, 0x7a6c }, { 3076, 0x2268 }, { 3081, 0x172c },
+ { 3088, 0x0e3b }, { 3096, 0x8220 }, { 3099, 0xe030 }, { 3104, 0x0012 },
+ { 3106, 0x3022 }, { 3110, 0xb820 }, { 3115, 0x25fd }, { 3125, 0x2000 },
+ { 3126, 0x5a22 }, { 3132, 0x0210 }, { 3134, 0x1141 }, { 3138, 0x1243 },
+ /* 0x7700 */
+ { 3143, 0x4441 }, { 3147, 0x16b4 }, { 3154, 0xe104 }, { 3159, 0x6270 },
+ { 3165, 0xe464 }, { 3172, 0xd0c4 }, { 3178, 0x1495 }, { 3184, 0x241d },
+ { 3190, 0x3011 }, { 3194, 0x8470 }, { 3199, 0xc484 }, { 3204, 0x4022 },
+ { 3207, 0x0208 }, { 3209, 0xc226 }, { 3215, 0x1451 }, { 3220, 0x0913 },
+ /* 0x7800 */
+ { 3225, 0x6260 }, { 3230, 0x2002 }, { 3232, 0x600e }, { 3237, 0x00a1 },
+ { 3240, 0x5198 }, { 3246, 0x5004 }, { 3249, 0x451b }, { 3256, 0x4400 },
+ { 3258, 0x8400 }, { 3260, 0xe110 }, { 3265, 0x3112 }, { 3270, 0xa80f },
+ { 3277, 0x5380 }, { 3282, 0x886c }, { 3288, 0x0453 }, { 3293, 0x8ccc },
+ /* 0x7900 */
+ { 3300, 0x1041 }, { 3303, 0xd401 }, { 3308, 0x22a1 }, { 3313, 0xa832 },
+ { 3319, 0x8c70 }, { 3325, 0x1912 }, { 3330, 0x0a80 }, { 3333, 0x5a04 },
+ { 3338, 0x1800 }, { 3340, 0x197a }, { 3348, 0x8b02 }, { 3353, 0x0912 },
+ { 3357, 0x8594 }, { 3363, 0x6450 }, { 3368, 0x2c25 }, { 3374, 0x1102 },
+ /* 0x7a00 */
+ { 3377, 0x168c }, { 3383, 0x4822 }, { 3387, 0xa882 }, { 3392, 0x0731 },
+ { 3398, 0x11b0 }, { 3403, 0xb260 }, { 3409, 0x24a1 }, { 3414, 0x4120 },
+ { 3417, 0x0c65 }, { 3423, 0x4013 }, { 3427, 0x1009 }, { 3430, 0x1a28 },
+ { 3435, 0x5240 }, { 3439, 0x0802 }, { 3441, 0x1b00 }, { 3445, 0x6812 },
+ /* 0x7b00 */
+ { 3450, 0x0080 }, { 3451, 0x8010 }, { 3453, 0xee88 }, { 3461, 0xa013 },
+ { 3466, 0x4083 }, { 3470, 0x0020 }, { 3471, 0xa651 }, { 3478, 0x008c },
+ { 3481, 0x4210 }, { 3484, 0x4843 }, { 3489, 0x9021 }, { 3493, 0x3c65 },
+ { 3501, 0x0524 }, { 3505, 0x0ed0 }, { 3511, 0x0500 }, { 3513, 0x5734 },
+ /* 0x7c00 */
+ { 3521, 0xda5e }, { 3531, 0x0a00 }, { 3533, 0x1161 }, { 3538, 0x065a },
+ { 3544, 0x0440 }, { 3546, 0x7e2e }, { 3556, 0x628a }, { 3562, 0x3205 },
+ { 3567, 0x80c0 }, { 3570, 0x4010 }, { 3572, 0x0041 }, { 3574, 0x9cc1 },
+ { 3581, 0xa390 }, { 3587, 0x26b8 }, { 3594, 0x0a40 }, { 3597, 0x0020 },
+ /* 0x7d00 */
+ { 3598, 0x8388 }, { 3603, 0x604e }, { 3609, 0x2448 }, { 3613, 0x7002 },
+ { 3617, 0x2183 }, { 3622, 0x368a }, { 3629, 0x04a0 }, { 3632, 0x8d01 },
+ { 3637, 0x396e }, { 3646, 0x60c2 }, { 3651, 0x04c0 }, { 3654, 0x02c8 },
+ { 3658, 0x707c }, { 3666, 0x0280 }, { 3668, 0x2c64 }, { 3674, 0x0662 },
+ /* 0x7e00 */
+ { 3679, 0x0101 }, { 3681, 0x30a3 }, { 3687, 0xb181 }, { 3693, 0x8048 },
+ { 3696, 0x40b0 }, { 3700, 0x8105 }, { 3704, 0xc826 }, { 3710, 0x4108 },
+ { 3713, 0x24c2 }, { 3718, 0x6522 }, { 3724, 0x0000 }, { 3724, 0x0000 },
+ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 },
+ /* 0x7f00 */
+ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0xf800 },
+ { 3729, 0x8098 }, { 3733, 0x380c }, { 3738, 0x207a }, { 3744, 0xe002 },
+ { 3748, 0xa801 }, { 3752, 0x10c3 }, { 3757, 0x2446 }, { 3762, 0x9010 },
+ { 3765, 0xc109 }, { 3770, 0x8800 }, { 3772, 0xd128 }, { 3778, 0xe404 },
+ /* 0x8000 */
+ { 3783, 0xe580 }, { 3789, 0xe05a }, { 3796, 0x5051 }, { 3801, 0x56b1 },
+ { 3809, 0x0011 }, { 3811, 0x0000 }, { 3811, 0x2051 }, { 3815, 0x0022 },
+ { 3817, 0x4102 }, { 3820, 0x5000 }, { 3822, 0x08c0 }, { 3825, 0x0300 },
+ { 3827, 0xa100 }, { 3830, 0x01b4 }, { 3835, 0x6001 }, { 3838, 0x464d },
+ /* 0x8100 */
+ { 3845, 0x0808 }, { 3847, 0x51c0 }, { 3852, 0x1091 }, { 3856, 0x1421 },
+ { 3860, 0x14a0 }, { 3864, 0x0084 }, { 3866, 0xa383 }, { 3873, 0x0080 },
+ { 3874, 0x4872 }, { 3880, 0x4941 }, { 3885, 0x4004 }, { 3887, 0x0814 },
+ { 3890, 0xcc28 }, { 3896, 0x68a0 }, { 3901, 0x1812 }, { 3905, 0xa367 },
+ /* 0x8200 */
+ { 3914, 0x8009 }, { 3917, 0x2618 }, { 3922, 0x0106 }, { 3925, 0x0414 },
+ { 3928, 0xc878 }, { 3935, 0x1042 }, { 3938, 0x2089 }, { 3942, 0xa810 },
+ { 3946, 0x469b }, { 3954, 0x0d52 }, { 3960, 0x479b }, { 3969, 0xd495 },
+ { 3977, 0x0040 }, { 3978, 0x0421 }, { 3981, 0xa515 }, { 3988, 0x60c0 },
+ /* 0x8300 */
+ { 3992, 0x0d83 }, { 3998, 0xe800 }, { 4002, 0x7006 }, { 4007, 0x3489 },
+ { 4013, 0x609c }, { 4019, 0x00fa }, { 4025, 0x0000 }, { 4025, 0xa101 },
+ { 4029, 0x2055 }, { 4034, 0x3b34 }, { 4042, 0x32c0 }, { 4047, 0xc000 },
+ { 4049, 0x8281 }, { 4053, 0x2013 }, { 4057, 0x0500 }, { 4059, 0x1340 },
+ /* 0x8400 */
+ { 4063, 0x8442 }, { 4067, 0x0222 }, { 4070, 0x8000 }, { 4071, 0x0200 },
+ { 4072, 0xa5a0 }, { 4078, 0x1746 }, { 4085, 0x04b1 }, { 4090, 0x3159 },
+ { 4097, 0x0022 }, { 4099, 0x402c }, { 4103, 0x8740 }, { 4108, 0x6412 },
+ { 4113, 0x9185 }, { 4119, 0x1008 }, { 4121, 0x8480 }, { 4124, 0x2c87 },
+ /* 0x8500 */
+ { 4131, 0x508c }, { 4136, 0x5001 }, { 4139, 0x8cbc }, { 4147, 0x805c },
+ { 4152, 0x8040 }, { 4154, 0xf24f }, { 4164, 0x8817 }, { 4170, 0xae00 },
+ { 4175, 0x9a62 }, { 4182, 0xa108 }, { 4186, 0x20a5 }, { 4191, 0xf1d0 },
+ { 4199, 0x4c84 }, { 4204, 0x8500 }, { 4207, 0x2141 }, { 4211, 0x9048 },
+ /* 0x8600 */
+ { 4215, 0x6031 }, { 4220, 0x4b07 }, { 4227, 0x0282 }, { 4230, 0x3540 },
+ { 4235, 0x0047 }, { 4239, 0x23cc }, { 4246, 0x921f }, { 4254, 0x04e0 },
+ { 4258, 0x2100 }, { 4260, 0x1542 }, { 4265, 0x21c2 }, { 4270, 0x83ba },
+ { 4278, 0x002b }, { 4282, 0x14a6 }, { 4288, 0x00a9 }, { 4292, 0x3400 },
+ /* 0x8700 */
+ { 4295, 0xc8b0 }, { 4301, 0xc219 }, { 4307, 0xc10a }, { 4312, 0x7606 },
+ { 4319, 0x2029 }, { 4323, 0x2100 }, { 4325, 0x8032 }, { 4329, 0x0806 },
+ { 4332, 0x1bf8 }, { 4341, 0x43a9 }, { 4348, 0x7089 }, { 4354, 0xc022 },
+ { 4358, 0x4702 }, { 4363, 0x9660 }, { 4369, 0x2c1c }, { 4375, 0x850a },
+ /* 0x8800 */
+ { 4380, 0x0e4a }, { 4386, 0xdf1d }, { 4397, 0x6100 }, { 4400, 0x1425 },
+ { 4405, 0x4f2a }, { 4413, 0x9562 }, { 4420, 0x0211 }, { 4423, 0x0a02 },
+ { 4426, 0x0001 }, { 4427, 0x9d00 }, { 4432, 0x0501 }, { 4435, 0x6400 },
+ { 4438, 0x7c01 }, { 4444, 0x480e }, { 4449, 0x8080 }, { 4451, 0x00a3 },
+ /* 0x8900 */
+ { 4455, 0xe042 }, { 4460, 0x1760 }, { 4466, 0x01c1 }, { 4470, 0x4627 },
+ { 4477, 0x8265 }, { 4483, 0x1c84 }, { 4488, 0x480e }, { 4493, 0x3c29 },
+ { 4500, 0x2200 }, { 4502, 0x9831 }, { 4508, 0x0021 }, { 4510, 0x10f1 },
+ { 4516, 0x0000 }, { 4516, 0x01f0 }, { 4521, 0x2a20 }, { 4525, 0xa24a },
+ /* 0x8a00 */
+ { 4531, 0x80b0 }, { 4535, 0x4036 }, { 4540, 0x9855 }, { 4547, 0x60a0 },
+ { 4551, 0x62a9 }, { 4558, 0x31c8 }, { 4564, 0x00a2 }, { 4567, 0xcee0 },
+ { 4575, 0x8849 }, { 4580, 0x82c5 }, { 4586, 0xc280 }, { 4590, 0x48c8 },
+ { 4595, 0x0748 }, { 4600, 0xa0ba }, { 4607, 0x1000 }, { 4608, 0x9071 },
+ /* 0x8b00 */
+ { 4614, 0x0c60 }, { 4618, 0xd002 }, { 4622, 0x2000 }, { 4623, 0x1081 },
+ { 4626, 0x217c }, { 4633, 0x421c }, { 4638, 0x2008 }, { 4640, 0x5340 },
+ { 4645, 0xa832 }, { 4651, 0xd030 }, { 4656, 0x0000 }, { 4656, 0x0000 },
+ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 },
+ /* 0x8c00 */
+ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x6300 },
+ { 4660, 0x8aa0 }, { 4665, 0x2b9a }, { 4673, 0x2358 }, { 4679, 0x4868 },
+ { 4684, 0x08c0 }, { 4687, 0x1a0d }, { 4693, 0x0010 }, { 4694, 0x0600 },
+ { 4696, 0x8a60 }, { 4701, 0x2260 }, { 4705, 0x9102 }, { 4709, 0xc1a5 },
+ /* 0x8d00 */
+ { 4716, 0x020a }, { 4719, 0x0884 }, { 4722, 0x0000 }, { 4722, 0x0000 },
+ { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x5220 }, { 4726, 0x8000 },
+ { 4727, 0x2114 }, { 4731, 0xc023 }, { 4736, 0x9841 }, { 4741, 0x1aa4 },
+ { 4747, 0x45e1 }, { 4754, 0x02b2 }, { 4759, 0x10b0 }, { 4763, 0x2017 },
+ /* 0x8e00 */
+ { 4768, 0x0872 }, { 4773, 0x0052 }, { 4776, 0x00cf }, { 4782, 0x23ca },
+ { 4789, 0xe803 }, { 4795, 0x7810 }, { 4800, 0xb206 }, { 4806, 0x0e03 },
+ { 4811, 0x020c }, { 4814, 0x6c25 }, { 4821, 0x6284 }, { 4826, 0x0c28 },
+ { 4830, 0x809b }, { 4836, 0x1012 }, { 4839, 0x6100 }, { 4842, 0x0683 },
+ /* 0x8f00 */
+ { 4847, 0x8185 }, { 4852, 0x41c1 }, { 4857, 0x71ab }, { 4866, 0x04f0 },
+ { 4871, 0x808b }, { 4876, 0x613e }, { 4884, 0x0020 }, { 4885, 0x0000 },
+ { 4885, 0x0000 }, { 4885, 0x2000 }, { 4886, 0x0073 }, { 4891, 0x4160 },
+ { 4895, 0x2c43 }, { 4901, 0x002d }, { 4905, 0x4119 }, { 4910, 0x4862 },
+ /* 0x9000 */
+ { 4915, 0x1114 }, { 4919, 0x0900 }, { 4921, 0xb700 }, { 4927, 0x8098 },
+ { 4931, 0x1018 }, { 4934, 0x2800 }, { 4936, 0x10c4 }, { 4940, 0x0211 },
+ { 4943, 0x5920 }, { 4948, 0x0ba1 }, { 4954, 0x0027 }, { 4958, 0x605d },
+ { 4965, 0x11b8 }, { 4971, 0xb3a4 }, { 4979, 0x8820 }, { 4982, 0xc051 },
+ /* 0x9100 */
+ { 4987, 0x2171 }, { 4993, 0x55d1 }, { 5001, 0xc2ad }, { 5009, 0x36d2 },
+ { 5017, 0x8188 }, { 5021, 0x0e88 }, { 5026, 0x2092 }, { 5030, 0x0e10 },
+ { 5034, 0x446a }, { 5040, 0x413a }, { 5046, 0x7142 }, { 5052, 0xb84f },
+ { 5061, 0x002c }, { 5064, 0x4698 }, { 5070, 0xf630 }, { 5078, 0x2a83 },
+ /* 0x9200 */
+ { 5084, 0x16f3 }, { 5093, 0x314d }, { 5100, 0xc178 }, { 5107, 0x5769 },
+ { 5116, 0xe4cd }, { 5125, 0x3302 }, { 5130, 0xc3a3 }, { 5138, 0xbbe1 },
+ { 5148, 0x6700 }, { 5153, 0x8284 }, { 5157, 0x89b1 }, { 5164, 0xbd44 },
+ { 5172, 0x79ef }, { 5184, 0xb3a9 }, { 5193, 0x51ab }, { 5201, 0x8a01 },
+ /* 0x9300 */
+ { 5205, 0x2105 }, { 5209, 0xf032 }, { 5216, 0x06b2 }, { 5222, 0x00d8 },
+ { 5226, 0x0380 }, { 5229, 0x45a7 }, { 5237, 0xa6b0 }, { 5244, 0xa45b },
+ { 5252, 0xad07 }, { 5260, 0x4924 }, { 5265, 0x0b5a }, { 5272, 0x0470 },
+ { 5276, 0x3ef2 }, { 5286, 0xd208 }, { 5291, 0x00c4 }, { 5294, 0x2f80 },
+ /* 0x9400 */
+ { 5300, 0xe316 }, { 5308, 0x80e0 }, { 5312, 0xc000 }, { 5314, 0xa81e },
+ { 5321, 0x1528 }, { 5326, 0x9220 }, { 5330, 0xe90a }, { 5337, 0x0006 },
+ { 5339, 0x0018 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ /* 0x9500 */
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x4300 },
+ { 5344, 0x7110 }, { 5349, 0xe000 }, { 5352, 0x1a42 }, { 5357, 0xa450 },
+ { 5362, 0x0b40 }, { 5366, 0xe60f }, { 5375, 0x0051 }, { 5378, 0x0000 },
+ /* 0x9600 */
+ { 5378, 0x0000 }, { 5378, 0x6000 }, { 5380, 0x1074 }, { 5385, 0x378a },
+ { 5393, 0x0002 }, { 5394, 0x01d4 }, { 5399, 0x4002 }, { 5401, 0xd810 },
+ { 5406, 0x021e }, { 5411, 0xa442 }, { 5416, 0xc270 }, { 5422, 0x0408 },
+ { 5424, 0x0400 }, { 5425, 0xe504 }, { 5431, 0x8200 }, { 5433, 0x0402 },
+ /* 0x9700 */
+ { 5435, 0x022c }, { 5439, 0x2c00 }, { 5442, 0x010e }, { 5446, 0x000a },
+ { 5448, 0xc40a }, { 5453, 0x0da0 }, { 5458, 0x4488 }, { 5462, 0xa9c8 },
+ { 5469, 0x0201 }, { 5471, 0xc6e0 }, { 5478, 0x5004 }, { 5481, 0xd766 },
+ { 5491, 0x76b2 }, { 5500, 0x6b93 }, { 5509, 0x8013 }, { 5513, 0x0592 },
+ /* 0x9800 */
+ { 5518, 0x6480 }, { 5522, 0x5250 }, { 5527, 0xc869 }, { 5534, 0x402d },
+ { 5539, 0x0490 }, { 5542, 0x06ce }, { 5549, 0x146c }, { 5555, 0x0000 },
+ { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x6800 }, { 5558, 0x8d91 },
+ { 5565, 0x1124 }, { 5569, 0x0000 }, { 5569, 0x04ea }, { 5575, 0x0048 },
+ /* 0x9900 */
+ { 5577, 0x0184 }, { 5580, 0x9ce2 }, { 5588, 0x08c4 }, { 5592, 0x1e3e },
+ { 5601, 0x61c3 }, { 5608, 0xdb10 }, { 5615, 0x0001 }, { 5616, 0x0000 },
+ { 5616, 0x0000 }, { 5616, 0xa800 }, { 5619, 0x0040 }, { 5620, 0xa627 },
+ { 5628, 0x0208 }, { 5630, 0x5618 }, { 5636, 0x1c80 }, { 5640, 0x6231 },
+ /* 0x9a00 */
+ { 5646, 0x181c }, { 5651, 0x4043 }, { 5655, 0x609d }, { 5662, 0x0168 },
+ { 5666, 0x5c92 }, { 5673, 0x2052 }, { 5677, 0x0000 }, { 5677, 0x0000 },
+ { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0xd400 }, { 5681, 0xca74 },
+ { 5689, 0x414a }, { 5694, 0x18e5 }, { 5701, 0x12b1 }, { 5707, 0xa62c },
+ /* 0x9b00 */
+ { 5714, 0x7b3f }, { 5726, 0x1a45 }, { 5732, 0x2841 }, { 5736, 0x26b8 },
+ { 5743, 0x1900 }, { 5746, 0x48e0 }, { 5751, 0x7d6a }, { 5761, 0x83a8 },
+ { 5767, 0xaef1 }, { 5777, 0x6411 }, { 5782, 0x12c0 }, { 5786, 0xd987 },
+ { 5795, 0x4182 }, { 5799, 0xa181 }, { 5804, 0x8ca0 }, { 5809, 0xa788 },
+ /* 0x9c00 */
+ { 5816, 0x8805 }, { 5820, 0x5742 }, { 5827, 0x07cc }, { 5834, 0x20e2 },
+ { 5839, 0xc63a }, { 5847, 0xf959 }, { 5857, 0x4f08 }, { 5863, 0x08a5 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0040 }, { 5869, 0x0284 },
+ /* 0x9d00 */
+ { 5872, 0x0804 }, { 5874, 0x7182 }, { 5880, 0x8000 }, { 5881, 0x341d },
+ { 5888, 0x04ac }, { 5893, 0x8018 }, { 5896, 0x0e2c }, { 5902, 0x58c1 },
+ { 5908, 0x6458 }, { 5914, 0x01ec }, { 5920, 0x5402 }, { 5924, 0x9222 },
+ { 5929, 0x0688 }, { 5933, 0xc4f0 }, { 5940, 0x4aa1 }, { 5946, 0x4019 },
+ /* 0x9e00 */
+ { 5950, 0x4484 }, { 5954, 0x3267 }, { 5962, 0x0000 }, { 5962, 0x0000 },
+ { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x1c00 },
+ { 5965, 0xc0bd }, { 5973, 0x4940 }, { 5977, 0xd110 }, { 5982, 0x0039 },
+ { 5986, 0x0940 }, { 5989, 0x8020 }, { 5991, 0x7090 }, { 5996, 0x8127 },
+ /* 0x9f00 */
+ { 6002, 0x820c }, { 6006, 0x8ed7 }, { 6016, 0x8c44 }, { 6021, 0xb696 },
+ { 6030, 0x00fa }, { 6036, 0x65e8 }, { 6044, 0xe300 }, { 6049, 0x242b },
+ { 6055, 0x8000 }, { 6056, 0x40d7 }, { 6063, 0x002e },
+};
+
+static int
+jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0460)
+ summary = &jisx0212_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2100 && wc < 0x2130)
+ summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = jisx0212_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/src/xlibi18n/lcUniConv/koi8_c.h b/src/xlibi18n/lcUniConv/koi8_c.h
new file mode 100644
index 00000000..e31c3684
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/koi8_c.h
@@ -0,0 +1,103 @@
+/* $XFree86: xc/lib/X11/lcUniConv/koi8_c.h,v 1.2 2000/11/28 16:10:29 dawes Exp $ */
+
+/*
+ * KOI8-C
+ */
+
+static const unsigned short koi8_c_2uni[128] = {
+ /* 0x80 */
+ 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3,
+ 0x04b7, 0x04b9, 0x04bb, 0x2580, 0x04d9, 0x04e3, 0x04e9, 0x04ef,
+ /* 0x90 */
+ 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2,
+ 0x04b6, 0x04b8, 0x04ba, 0x2321, 0x04d8, 0x04e2, 0x04e8, 0x04ee,
+ /* 0xa0 */
+ 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f,
+ /* 0xb0 */
+ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0486, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_c_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_c_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_c_page00[1] = {
+ 0xa0, /* 0xa0-0xa7 */
+};
+static const unsigned char koi8_c_page04[240] = {
+ 0x00, 0xb3, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00-0x07 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0xbf, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x50-0x57 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xbd, 0xad, 0x90, 0x80, 0x00, 0x00, 0x91, 0x81, /* 0x90-0x97 */
+ 0x00, 0x00, 0x92, 0x82, 0x93, 0x83, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x85, /* 0xa8-0xaf */
+ 0x96, 0x86, 0x97, 0x87, 0x00, 0x00, 0x98, 0x88, /* 0xb0-0xb7 */
+ 0x99, 0x89, 0x9a, 0x8a, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x9c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x9d, 0x8d, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x9e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x8f, /* 0xe8-0xef */
+};
+static const unsigned char koi8_c_page22[1] = {
+ 0xb0, /* 0x16-0x16 */
+};
+
+static int
+koi8_c_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00a1)
+ c = koi8_c_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x04ef)
+ c = koi8_c_page04[wc-0x0400];
+ else if (wc >= 0x2216 && wc < 0x2217)
+ c = koi8_c_page22[wc-0x2216];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/koi8_r.h b/src/xlibi18n/lcUniConv/koi8_r.h
new file mode 100644
index 00000000..a0d3d9b2
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/koi8_r.h
@@ -0,0 +1,135 @@
+/* $XFree86: xc/lib/X11/lcUniConv/koi8_r.h,v 1.3 2000/11/29 17:40:34 dawes Exp $ */
+
+/*
+ * KOI8-R
+ */
+
+/* Specification: RFC 1489 */
+
+static const unsigned short koi8_r_2uni[128] = {
+ /* 0x80 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ /* 0x90 */
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ /* 0xa0 */
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ /* 0xb0 */
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_r_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_r_page00[88] = {
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
+};
+static const unsigned char koi8_r_page04[88] = {
+ 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+static const unsigned char koi8_r_page22[80] = {
+ 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
+};
+static const unsigned char koi8_r_page23[8] = {
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char koi8_r_page25[168] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
+ 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
+ 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
+ 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+
+static int
+koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = koi8_r_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0458)
+ c = koi8_r_page04[wc-0x0400];
+ else if (wc >= 0x2218 && wc < 0x2268)
+ c = koi8_r_page22[wc-0x2218];
+ else if (wc >= 0x2320 && wc < 0x2328)
+ c = koi8_r_page23[wc-0x2320];
+ else if (wc >= 0x2500 && wc < 0x25a8)
+ c = koi8_r_page25[wc-0x2500];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/koi8_u.h b/src/xlibi18n/lcUniConv/koi8_u.h
new file mode 100644
index 00000000..43457afd
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/koi8_u.h
@@ -0,0 +1,143 @@
+/* $XFree86: xc/lib/X11/lcUniConv/koi8_u.h,v 1.3 2000/11/29 17:40:34 dawes Exp $ */
+
+/*
+ * KOI8-U
+ */
+
+/* Specification: RFC 2319 */
+
+static const unsigned short koi8_u_2uni[128] = {
+ /* 0x80 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ /* 0x90 */
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ /* 0xa0 */
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
+ /* 0xb0 */
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_u_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_u_page00[88] = {
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
+};
+static const unsigned char koi8_u_page04[152] = {
+ 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char koi8_u_page22[80] = {
+ 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
+};
+static const unsigned char koi8_u_page23[8] = {
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char koi8_u_page25[168] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */
+ 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
+ 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */
+ 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+
+static int
+koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = koi8_u_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0498)
+ c = koi8_u_page04[wc-0x0400];
+ else if (wc >= 0x2218 && wc < 0x2268)
+ c = koi8_u_page22[wc-0x2218];
+ else if (wc >= 0x2320 && wc < 0x2328)
+ c = koi8_u_page23[wc-0x2320];
+ else if (wc >= 0x2500 && wc < 0x25a8)
+ c = koi8_u_page25[wc-0x2500];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/ksc5601.h b/src/xlibi18n/lcUniConv/ksc5601.h
new file mode 100644
index 00000000..c7dab1eb
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/ksc5601.h
@@ -0,0 +1,3003 @@
+/* $XFree86: xc/lib/X11/lcUniConv/ksc5601.h,v 1.4 2001/08/09 19:14:09 dawes Exp $ */
+
+/*
+ * KSC5601.1987-0
+ */
+
+static const unsigned short ksc5601_2uni_page21[1115] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
+ 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
+ 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
+ 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
+ 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
+ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
+ 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
+ 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
+ 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2,
+ /* 0x22 */
+ 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8,
+ 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0,
+ 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0,
+ 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663,
+ 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5,
+ 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c,
+ 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196,
+ 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116,
+ 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x23 */
+ 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0x24 */
+ 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,
+ /* 0x25 */
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
+ 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
+ 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
+ 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
+ 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d,
+ 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a,
+ 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a,
+ 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546,
+ 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4,
+ 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e,
+ 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, 0x338f,
+ 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, 0x33b1,
+ 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, 0x33b9,
+ 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, 0x33bc,
+ 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394,
+ 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5,
+ 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac,
+ 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f,
+ 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd,
+ 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267,
+ 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f,
+ 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277,
+ 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, 0x24d3,
+ 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db,
+ 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3,
+ 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, 0x2154,
+ 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
+ /* 0x29 */
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
+ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
+ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
+ 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
+ 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
+ 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
+ 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
+ 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
+ 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
+ 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
+ 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
+ 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084,
+ /* 0x2a */
+ 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, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2b */
+ 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, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2c */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f,
+};
+static const unsigned short ksc5601_2uni_page30[2350] = {
+ /* 0x30 */
+ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
+ 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
+ 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
+ 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
+ 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
+ 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
+ 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
+ 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
+ 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
+ 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
+ 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
+ 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06,
+ /* 0x31 */
+ 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29,
+ 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45,
+ 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c,
+ 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c,
+ 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90,
+ 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8,
+ 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9,
+ 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d,
+ 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40,
+ 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e,
+ 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61,
+ 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78,
+ /* 0x32 */
+ 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc,
+ 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0,
+ 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4,
+ 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d,
+ 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42,
+ 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65,
+ 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c,
+ 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb,
+ 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1,
+ 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014,
+ 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c,
+ 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059,
+ /* 0x33 */
+ 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d, 0xb08f,
+ 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1,
+ 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
+ 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5,
+ 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0,
+ 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113,
+ 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124, 0xb125,
+ 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140,
+ 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155, 0xb158,
+ 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188,
+ 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198, 0xb19c,
+ 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
+ /* 0x34 */
+ 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
+ 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
+ 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
+ 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
+ 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
+ 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
+ 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
+ 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
+ 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
+ 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
+ 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
+ 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365,
+ /* 0x35 */
+ 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378,
+ 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394,
+ 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb,
+ 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db,
+ 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c,
+ 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454,
+ 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488,
+ 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0,
+ 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3,
+ 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514,
+ 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528,
+ 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538,
+ /* 0x36 */
+ 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d,
+ 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0,
+ 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3,
+ 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc,
+ 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611,
+ 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668,
+ 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4,
+ 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729,
+ 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748,
+ 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771,
+ 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d,
+ 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797,
+ /* 0x37 */
+ 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac,
+ 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed,
+ 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807,
+ 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b, 0xb81d,
+ 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838,
+ 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d, 0xb860,
+ 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d,
+ 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5,
+ 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9,
+ 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904, 0xb918,
+ 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951,
+ 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
+ /* 0x38 */
+ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
+ 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
+ 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
+ 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
+ 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
+ 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
+ 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
+ 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
+ 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
+ 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
+ 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
+ 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc,
+ /* 0x39 */
+ 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20,
+ 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c,
+ 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f,
+ 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c,
+ 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4,
+ 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00,
+ 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11,
+ 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d,
+ 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30,
+ 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45,
+ 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88,
+ 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97,
+ /* 0x3a */
+ 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0,
+ 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4,
+ 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4,
+ 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09,
+ 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c,
+ 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84,
+ 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95,
+ 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5,
+ 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03,
+ 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f,
+ 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57,
+ 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64,
+ /* 0x3b */
+ 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, 0xbe7b,
+ 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90,
+ 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4, 0xbed7,
+ 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08,
+ 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40, 0xbf41,
+ 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5,
+ 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c,
+ 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091,
+ 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad,
+ 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd,
+ 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0,
+ 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
+ /* 0x3c */
+ 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
+ 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
+ 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
+ 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
+ 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
+ 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
+ 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
+ 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
+ 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
+ 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
+ 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
+ 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d,
+ /* 0x3d */
+ 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254,
+ 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c,
+ 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b,
+ 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5,
+ 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb,
+ 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb,
+ 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314,
+ 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345,
+ 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c,
+ 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc,
+ 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5,
+ 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430,
+ /* 0x3e */
+ 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c,
+ 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc,
+ 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500,
+ 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c,
+ 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548,
+ 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555,
+ 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564,
+ 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d,
+ 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595,
+ 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8,
+ 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6,
+ 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce,
+ /* 0x3f */
+ 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5,
+ 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc,
+ 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607,
+ 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c, 0xc624,
+ 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634,
+ 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644, 0xc648,
+ 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660,
+ 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680, 0xc688,
+ 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4,
+ 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9,
+ 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0,
+ 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
+ /* 0x40 */
+ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
+ 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
+ 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
+ 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
+ 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
+ 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
+ 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
+ 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
+ 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
+ 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
+ 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a,
+ /* 0x41 */
+ 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820,
+ 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840,
+ 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874,
+ 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887,
+ 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8,
+ 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7,
+ 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900,
+ 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918,
+ 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961,
+ 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c,
+ 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4,
+ 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3,
+ /* 0x42 */
+ 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2,
+ 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8,
+ 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d,
+ 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c,
+ 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98,
+ 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1,
+ 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10,
+ 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c,
+ 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c,
+ 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10,
+ 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29,
+ 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b,
+ /* 0x43 */
+ 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c, 0xcc54,
+ 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68,
+ 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8, 0xcca9,
+ 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4,
+ 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec, 0xccf0,
+ 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b,
+ 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60, 0xcd64,
+ 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95,
+ 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0, 0xcdc4,
+ 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb,
+ 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20, 0xce21,
+ 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
+ /* 0x44 */
+ 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
+ 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
+ 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
+ 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
+ 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
+ 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
+ 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
+ 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
+ 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
+ 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
+ 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c,
+ /* 0x45 */
+ 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060,
+ 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4,
+ 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0,
+ 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4,
+ 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef,
+ 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138,
+ 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d,
+ 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c,
+ 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0,
+ 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4,
+ 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234,
+ 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c,
+ /* 0x46 */
+ 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295,
+ 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc,
+ 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8,
+ 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300,
+ 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314,
+ 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328,
+ 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d,
+ 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d,
+ 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8,
+ 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5,
+ 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed,
+ 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401,
+ /* 0x47 */
+ 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d,
+ 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482, 0xd488,
+ 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4,
+ 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd,
+ 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d,
+ 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558, 0xd559,
+ 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574,
+ 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588, 0xd589,
+ 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8,
+ 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4,
+ 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610,
+ 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
+ /* 0x48 */
+ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
+ 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
+ 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
+ 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
+ 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
+ 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
+ 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
+ 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
+ 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
+ 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
+ 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
+ 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d,
+};
+static const unsigned short ksc5601_2uni_page4a[4888] = {
+ /* 0x4a */
+ 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
+ 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
+ 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
+ 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
+ 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
+ 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
+ 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
+ 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
+ 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
+ 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
+ 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
+ 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95,
+ /* 0x4b */
+ 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808,
+ 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f,
+ 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221,
+ 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7,
+ 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea,
+ 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900,
+ 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9,
+ 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da,
+ 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d,
+ 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106,
+ 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091,
+ 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2,
+ /* 0x4c */
+ 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, 0x61a9,
+ 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, 0x9694,
+ 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, 0x898b,
+ 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, 0x7f3a,
+ 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, 0x4eac,
+ 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, 0x5770,
+ 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, 0x666f,
+ 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, 0x74a5,
+ 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, 0x7d93,
+ 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015, 0x93e1,
+ 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a, 0x5951,
+ 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0,
+ /* 0x4d */
+ 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b,
+ 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9,
+ 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7,
+ 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc,
+ 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6,
+ 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903, 0x8f9c,
+ 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2,
+ 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606,
+ 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0xf904,
+ 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050,
+ 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2,
+ 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
+ /* 0x4e */
+ 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
+ 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
+ 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
+ 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
+ 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
+ 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
+ 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
+ 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
+ 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
+ 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
+ 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
+ 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe,
+ /* 0x4f */
+ 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7,
+ 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb,
+ 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396,
+ 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205,
+ 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1,
+ 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b,
+ 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4,
+ 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae,
+ 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8,
+ 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5,
+ 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d,
+ 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4,
+ /* 0x50 */
+ 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, 0x73ea,
+ 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, 0x9035,
+ 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, 0xf908,
+ 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, 0x9699,
+ 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, 0x747e,
+ 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, 0xf909,
+ 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, 0x79bd,
+ 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b, 0x53ca,
+ 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, 0x77dc,
+ 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668, 0x573b,
+ 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90, 0x5d0e,
+ 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3,
+ /* 0x51 */
+ 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23,
+ 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3,
+ 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a,
+ 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18,
+ 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e,
+ 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854,
+ 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6, 0xf90d,
+ 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912, 0xf913,
+ 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe, 0xf919,
+ 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e, 0xf91f,
+ 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f, 0x6960,
+ 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
+ /* 0x52 */
+ 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
+ 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
+ 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
+ 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
+ 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
+ 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
+ 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
+ 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
+ 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
+ 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
+ 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
+ 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336,
+ /* 0x53 */
+ 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7,
+ 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde,
+ 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8,
+ 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b,
+ 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7,
+ 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510,
+ 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6,
+ 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1,
+ 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8,
+ 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230,
+ 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6,
+ 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843,
+ /* 0x54 */
+ 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, 0x76dc,
+ 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, 0x8e48,
+ 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, 0x6bd2,
+ 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, 0x7e9b,
+ 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, 0x711e,
+ 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, 0x51cd,
+ 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, 0x6f7c,
+ 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, 0x6597,
+ 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46, 0x9017,
+ 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d, 0x5f97,
+ 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04, 0x9127,
+ 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85,
+ /* 0x55 */
+ 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9, 0x73de,
+ 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82, 0x5375,
+ 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c, 0x8fa3,
+ 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c, 0x85cd,
+ 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717, 0x6d6a,
+ 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d, 0x5fa0,
+ 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9,
+ 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b,
+ 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e,
+ 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62,
+ 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b,
+ 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
+ /* 0x56 */
+ 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
+ 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
+ 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
+ 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
+ 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
+ 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
+ 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
+ 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
+ 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
+ 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
+ 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
+ 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc,
+ /* 0x57 */
+ 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda,
+ 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b,
+ 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409,
+ 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e,
+ 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b,
+ 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc,
+ 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398,
+ 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281,
+ 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8,
+ 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d,
+ 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f,
+ 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c,
+ /* 0x58 */
+ 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, 0x78e8,
+ 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, 0x83ab,
+ 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, 0x633d,
+ 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, 0x8513,
+ 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, 0x6cab,
+ 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, 0x671b,
+ 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, 0x57cb,
+ 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, 0x7164,
+ 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, 0x964c,
+ 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df, 0x840c,
+ 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94, 0x7704,
+ 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5,
+ /* 0x59 */
+ 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f,
+ 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4,
+ 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478,
+ 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261,
+ 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28,
+ 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9,
+ 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999,
+ 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7,
+ 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab,
+ 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46,
+ 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8,
+ 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
+ /* 0x5a */
+ 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
+ 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
+ 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
+ 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
+ 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
+ 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
+ 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
+ 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
+ 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
+ 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
+ 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
+ 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51,
+ /* 0x5b */
+ 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d,
+ 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9,
+ 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa,
+ 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6,
+ 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc,
+ 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4,
+ 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70,
+ 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a,
+ 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc,
+ 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e,
+ 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb,
+ 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656,
+ /* 0x5c */
+ 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01, 0x8b8a,
+ 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, 0x4e19,
+ 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, 0x68c5,
+ 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, 0x9a08,
+ 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, 0x6e7a,
+ 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, 0x8f14,
+ 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, 0x798f,
+ 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, 0x99a5,
+ 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, 0x5cf0,
+ 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec, 0x8702,
+ 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085, 0x5256,
+ 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66,
+ /* 0x5d */
+ 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577, 0x65a7,
+ 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151,
+ 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb,
+ 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7,
+ 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff,
+ 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde,
+ 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17, 0x5f7f,
+ 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15,
+ 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2,
+ 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6,
+ 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812, 0x7891,
+ 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
+ /* 0x5e */
+ 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
+ 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
+ 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
+ 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
+ 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
+ 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
+ 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
+ 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
+ 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
+ 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
+ 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
+ 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a,
+ /* 0x5f */
+ 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d,
+ 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e,
+ 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518,
+ 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf,
+ 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38,
+ 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d,
+ 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4,
+ 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7,
+ 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d,
+ 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055,
+ 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2,
+ 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72,
+ /* 0x60 */
+ 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, 0x9ecd,
+ 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, 0x6790,
+ 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, 0x932b,
+ 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, 0x657e,
+ 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, 0x766c,
+ 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, 0x861a,
+ 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, 0x9bae,
+ 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, 0x859b,
+ 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, 0x6bb2,
+ 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89, 0x71ee,
+ 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210, 0x661f,
+ 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c,
+ /* 0x61 */
+ 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72,
+ 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec, 0x562f,
+ 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414,
+ 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2,
+ 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20,
+ 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5,
+ 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f,
+ 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0,
+ 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f,
+ 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e, 0x9396,
+ 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd,
+ 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
+ /* 0x62 */
+ 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
+ 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
+ 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
+ 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
+ 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
+ 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
+ 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
+ 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
+ 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
+ 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
+ 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
+ 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27,
+ /* 0x63 */
+ 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936,
+ 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607,
+ 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4,
+ 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f,
+ 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494,
+ 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4,
+ 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184,
+ 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81,
+ 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc,
+ 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce,
+ 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4,
+ 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81,
+ /* 0x64 */
+ 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, 0x5341,
+ 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, 0x5a25,
+ 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, 0x8a1d,
+ 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, 0x5dbd,
+ 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102, 0x9354,
+ 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, 0x6848,
+ 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, 0x8ecb,
+ 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, 0x83f4,
+ 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, 0x600f,
+ 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3, 0x5d16,
+ 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744, 0x5384,
+ 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d,
+ /* 0x65 */
+ 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c,
+ 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce, 0x5f31,
+ 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5, 0x8e8d,
+ 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059, 0x63da,
+ 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b, 0x7001,
+ 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a, 0xf97c,
+ 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a, 0x5704,
+ 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a,
+ 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830,
+ 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c,
+ 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88,
+ 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
+ /* 0x66 */
+ 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
+ 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
+ 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
+ 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
+ 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
+ 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
+ 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
+ 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
+ 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
+ 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
+ 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
+ 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2,
+ /* 0x67 */
+ 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449,
+ 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac,
+ 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41,
+ 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b,
+ 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1,
+ 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4,
+ 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca,
+ 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4,
+ 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810,
+ 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da,
+ 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca,
+ 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3,
+ /* 0x68 */
+ 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, 0x9f07,
+ 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, 0x761f,
+ 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, 0x7515,
+ 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, 0x7aa9,
+ 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b,
+ 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, 0x7de9,
+ 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, 0x66f0,
+ 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, 0x6b6a,
+ 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba, 0xf9bb,
+ 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5, 0xf9bc,
+ 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be, 0x66dc,
+ 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1,
+ /* 0x69 */
+ 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2, 0x87ef,
+ 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e, 0x6b32,
+ 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7,
+ 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67,
+ 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9,
+ 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076, 0x512a,
+ 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182,
+ 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9,
+ 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5,
+ 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631,
+ 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5, 0x6a52,
+ 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
+ /* 0x6a */
+ 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
+ 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
+ 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
+ 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
+ 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
+ 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
+ 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
+ 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
+ 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
+ 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
+ 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
+ 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb,
+ /* 0x6b */
+ 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652,
+ 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb,
+ 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9,
+ 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2,
+ 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64,
+ 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9,
+ 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc,
+ 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59,
+ 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3,
+ 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100,
+ 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3,
+ 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc,
+ /* 0x6c */
+ 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de, 0x5937,
+ 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0, 0xf9e1,
+ 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd, 0xf9e5,
+ 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, 0xf9e7,
+ 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4, 0x990c,
+ 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a,
+ 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0, 0x59fb,
+ 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a, 0x8335,
+ 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2, 0xf9f3,
+ 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038, 0x93b0,
+ 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4, 0xf9f5,
+ 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344,
+ /* 0x6d */
+ 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4,
+ 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063,
+ 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1,
+ 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7,
+ 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8,
+ 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7,
+ 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a,
+ 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef,
+ 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756,
+ 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350, 0x748b,
+ 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523,
+ 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
+ /* 0x6e */
+ 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
+ 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
+ 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
+ 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
+ 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
+ 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
+ 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
+ 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
+ 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
+ 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
+ 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
+ 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1,
+ /* 0x6f */
+ 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b,
+ 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293,
+ 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a,
+ 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe,
+ 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5,
+ 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448,
+ 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a,
+ 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89,
+ 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1,
+ 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d,
+ 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a,
+ 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756,
+ /* 0x70 */
+ 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, 0x5e1d,
+ 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, 0x81cd,
+ 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, 0x973d,
+ 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, 0x5f14,
+ 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, 0x671d,
+ 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, 0x722a,
+ 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, 0x7c97,
+ 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, 0x8abf,
+ 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, 0x9ce5,
+ 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352, 0x62d9,
+ 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5, 0x6dd9,
+ 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b,
+ /* 0x71 */
+ 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7,
+ 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4,
+ 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d,
+ 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7,
+ 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db,
+ 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152,
+ 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8,
+ 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c,
+ 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301,
+ 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41,
+ 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7,
+ 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
+ /* 0x72 */
+ 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
+ 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
+ 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
+ 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
+ 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
+ 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
+ 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
+ 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
+ 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
+ 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
+ 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
+ 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f,
+ /* 0x73 */
+ 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f,
+ 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a,
+ 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84,
+ 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da,
+ 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d,
+ 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed,
+ 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92,
+ 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70,
+ 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32,
+ 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5,
+ 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc,
+ 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56,
+ /* 0x74 */
+ 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff, 0x5254,
+ 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, 0x7620,
+ 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, 0x5929,
+ 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, 0x85a6,
+ 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, 0x51f8,
+ 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, 0x8f4d,
+ 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, 0x7c3d,
+ 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, 0x7252,
+ 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, 0x6df8,
+ 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243, 0x66ff,
+ 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4, 0x521d,
+ 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2,
+ /* 0x75 */
+ 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e,
+ 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82,
+ 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7,
+ 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a,
+ 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283,
+ 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e,
+ 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf,
+ 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a,
+ 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51,
+ 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625,
+ 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96,
+ 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
+ /* 0x76 */
+ 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
+ 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
+ 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
+ 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
+ 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
+ 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
+ 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
+ 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
+ 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
+ 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
+ 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
+ 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17,
+ /* 0x77 */
+ 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058,
+ 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d,
+ 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03,
+ 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70,
+ 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04,
+ 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e,
+ 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806,
+ 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac,
+ 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46,
+ 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c,
+ 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742,
+ 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211,
+ /* 0x78 */
+ 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, 0x6557,
+ 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, 0x5f6d,
+ 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241, 0x7247,
+ 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, 0x576a,
+ 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, 0x5ee2,
+ 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, 0x5305,
+ 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, 0x629b,
+ 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832, 0x80de,
+ 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, 0x92ea,
+ 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206, 0xfa07,
+ 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02, 0x74e2,
+ 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43,
+ /* 0x79 */
+ 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c,
+ 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c,
+ 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d,
+ 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630,
+ 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15,
+ 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d,
+ 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591,
+ 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8,
+ 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677,
+ 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c,
+ 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d,
+ 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
+ /* 0x7a */
+ 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
+ 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
+ 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
+ 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
+ 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
+ 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
+ 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
+ 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
+ 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
+ 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
+ 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
+ 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b,
+ /* 0x7b */
+ 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9,
+ 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8,
+ 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af,
+ 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5,
+ 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf,
+ 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425,
+ 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6,
+ 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac,
+ 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7,
+ 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18,
+ 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b,
+ 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575,
+ /* 0x7c */
+ 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, 0x9774,
+ 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, 0x559a,
+ 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, 0x6853,
+ 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, 0x6d3b,
+ 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, 0x604d,
+ 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, 0x6e5f,
+ 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, 0x8352,
+ 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, 0x5f8a,
+ 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, 0x6fae,
+ 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8, 0x8cc4,
+ 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686, 0x5b5d,
+ 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6,
+ /* 0x7d */
+ 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e,
+ 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd,
+ 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb,
+ 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431,
+ 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147,
+ 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667,
+ 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8,
+ 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07,
+ 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5,
+ 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09,
+ 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9,
+ 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70,
+};
+
+static int
+ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 1115)
+ wc = ksc5601_2uni_page21[i];
+ } else if (i < 3854) {
+ if (i < 3760)
+ wc = ksc5601_2uni_page30[i-1410];
+ } else {
+ if (i < 8742)
+ wc = ksc5601_2uni_page4a[i-3854];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short ksc5601_2charset[8224] = {
+ 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e,
+ 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c,
+ 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a,
+ 0x282d, 0x292c, 0x2921, 0x2923, 0x2140, 0x292a, 0x292d, 0x2922,
+ 0x2824, 0x2924, 0x2925, 0x2826, 0x2926, 0x2927, 0x2828, 0x2928,
+ 0x2829, 0x2929, 0x2930, 0x282f, 0x292f, 0x282b, 0x292b, 0x282e,
+ 0x292e, 0x2227, 0x2230, 0x2228, 0x222b, 0x222a, 0x222d, 0x2229,
+ 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
+ 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550,
+ 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
+ 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568,
+ 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570,
+ 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
+ 0x2c27, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28,
+ 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30,
+ 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38,
+ 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40,
+ 0x2c41, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58,
+ 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60,
+ 0x2c61, 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68,
+ 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70,
+ 0x2c71, 0x2c57, 0x212a, 0x212e, 0x212f, 0x2130, 0x2131, 0x2253,
+ 0x2254, 0x2125, 0x2126, 0x2236, 0x2147, 0x2148, 0x2158, 0x2979,
+ 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x2149, 0x2235, 0x2724,
+ 0x2260, 0x2265, 0x2262, 0x2759, 0x214a, 0x2877, 0x2878, 0x287b,
+ 0x287c, 0x287d, 0x287e, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x2521, 0x2522, 0x2523,
+ 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x2167,
+ 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, 0x2259,
+ 0x2257, 0x2221, 0x2222, 0x2223, 0x2153, 0x2224, 0x2154, 0x2174,
+ 0x2175, 0x2233, 0x2232, 0x216e, 0x2170, 0x2144, 0x2150, 0x212b,
+ 0x217c, 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x2231, 0x2145,
+ 0x2171, 0x212d, 0x216f, 0x2156, 0x2141, 0x2155, 0x2142, 0x2143,
+ 0x216c, 0x216d, 0x2178, 0x2179, 0x2176, 0x2177, 0x2241, 0x2151,
+ 0x2152, 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d,
+ 0x286e, 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875,
+ 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e,
+ 0x296f, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 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, 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, 0x2621, 0x262c, 0x2622, 0x262d, 0x2623,
+ 0x2648, 0x2647, 0x262e, 0x2624, 0x2642, 0x2641, 0x262f, 0x2626,
+ 0x2646, 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627,
+ 0x263c, 0x2649, 0x264a, 0x2637, 0x264b, 0x264c, 0x2632, 0x2629,
+ 0x263e, 0x264d, 0x264e, 0x2639, 0x264f, 0x2650, 0x2634, 0x2628,
+ 0x2651, 0x2652, 0x2638, 0x263d, 0x2653, 0x2654, 0x2633, 0x262a,
+ 0x2655, 0x2656, 0x263a, 0x263f, 0x2657, 0x2658, 0x2635, 0x262b,
+ 0x2659, 0x265a, 0x263b, 0x265b, 0x265c, 0x2640, 0x265d, 0x265e,
+ 0x265f, 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2636, 0x2246,
+ 0x2161, 0x2160, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, 0x2249,
+ 0x224c, 0x2163, 0x2162, 0x223a, 0x2239, 0x2165, 0x2164, 0x2238,
+ 0x2237, 0x215f, 0x215e, 0x2242, 0x215b, 0x215d, 0x215c, 0x2244,
+ 0x2245, 0x215a, 0x2159, 0x224f, 0x224e, 0x2250, 0x2251, 0x214f,
+ 0x214e, 0x223c, 0x223d, 0x2240, 0x223b, 0x223e, 0x223f, 0x224d,
+ 0x225b, 0x225c, 0x225d, 0x225a, 0x2121, 0x2122, 0x2123, 0x2128,
+ 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
+ 0x213c, 0x213d, 0x216b, 0x2132, 0x2133, 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,
+ 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, 0x2b28,
+ 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, 0x2b30,
+ 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, 0x2b38,
+ 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, 0x2b40,
+ 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, 0x2b48,
+ 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, 0x2b50,
+ 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, 0x2b58,
+ 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, 0x2b60,
+ 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, 0x2b68,
+ 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, 0x2b70,
+ 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x2421, 0x2422,
+ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a,
+ 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432,
+ 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a,
+ 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442,
+ 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a,
+ 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452,
+ 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a,
+ 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 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, 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,
+ 0x225f, 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, 0x225e, 0x2749, 0x274a,
+ 0x274b, 0x274c, 0x274d, 0x273a, 0x273b, 0x275c, 0x275d, 0x275e,
+ 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758,
+ 0x2721, 0x2722, 0x2723, 0x2725, 0x272b, 0x272c, 0x272d, 0x272e,
+ 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2727, 0x2728,
+ 0x2729, 0x272a, 0x273d, 0x273e, 0x2765, 0x2766, 0x2767, 0x2768,
+ 0x2761, 0x2762, 0x2763, 0x273f, 0x2740, 0x2741, 0x2742, 0x2743,
+ 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x274e, 0x274f, 0x2750,
+ 0x2751, 0x2752, 0x2753, 0x275a, 0x275b, 0x2263, 0x276c, 0x2726,
+ 0x2760, 0x276f, 0x2261, 0x273c, 0x276d, 0x2735, 0x2739, 0x276a,
+ 0x276b, 0x275f, 0x2264, 0x2764, 0x276e, 0x2769, 0x6c69, 0x6f4b,
+ 0x7652, 0x5832, 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x5c74, 0x7564,
+ 0x7326, 0x5d60, 0x6126, 0x4e78, 0x5c30, 0x632a, 0x7169, 0x4d7a,
+ 0x7c2f, 0x5321, 0x712b, 0x6751, 0x522c, 0x4e79, 0x717d, 0x5e3f,
+ 0x7b3a, 0x7939, 0x4e52, 0x632b, 0x6b60, 0x4e7a, 0x4b77, 0x6525,
+ 0x4a61, 0x544c, 0x6a61, 0x5c63, 0x5f2d, 0x4b6b, 0x552f, 0x5675,
+ 0x6578, 0x5e40, 0x6c23, 0x694d, 0x6a27, 0x6976, 0x7b3b, 0x6769,
+ 0x6f4c, 0x5066, 0x5e41, 0x642c, 0x584c, 0x7971, 0x4e5f, 0x7a24,
+ 0x6632, 0x7a7b, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x5322, 0x6c51,
+ 0x6427, 0x6c52, 0x7631, 0x4e7b, 0x5051, 0x4b3f, 0x6d24, 0x6d28,
+ 0x5e42, 0x7662, 0x6d5c, 0x5c75, 0x6039, 0x544e, 0x7435, 0x535b,
+ 0x5635, 0x6c24, 0x6466, 0x716a, 0x4b6c, 0x4b40, 0x6c72, 0x506a,
+ 0x7972, 0x6c25, 0x505f, 0x676a, 0x506b, 0x5c51, 0x5b69, 0x7d4c,
+ 0x5b57, 0x5a61, 0x5636, 0x635f, 0x5e43, 0x5e44, 0x4a21, 0x6e6c,
+ 0x5323, 0x6e37, 0x784f, 0x6a48, 0x6e38, 0x712c, 0x7125, 0x694e,
+ 0x793c, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x7825, 0x653a, 0x5b58,
+ 0x4a22, 0x514d, 0x6e6d, 0x6c6b, 0x5e45, 0x6360, 0x4a49, 0x7269,
+ 0x554e, 0x7636, 0x4e42, 0x5647, 0x6334, 0x712d, 0x6a62, 0x5742,
+ 0x7327, 0x4d6a, 0x6b6e, 0x5932, 0x7d25, 0x7655, 0x5562, 0x7835,
+ 0x4c75, 0x7535, 0x642d, 0x676b, 0x7155, 0x703b, 0x6935, 0x4c49,
+ 0x7a55, 0x6154, 0x5756, 0x5c41, 0x5e46, 0x7a6f, 0x6361, 0x6173,
+ 0x5c76, 0x4e7c, 0x5b44, 0x7871, 0x5c64, 0x656f, 0x5c31, 0x5556,
+ 0x735a, 0x4b41, 0x5b43, 0x597a, 0x536e, 0x7a38, 0x7d26, 0x6b6f,
+ 0x7426, 0x4c4a, 0x7328, 0x735b, 0x5b27, 0x7637, 0x4f66, 0x7072,
+ 0x4b5a, 0x6752, 0x5743, 0x7670, 0x685e, 0x6526, 0x6567, 0x4a23,
+ 0x4c27, 0x6a49, 0x7836, 0x7a25, 0x712e, 0x6f4e, 0x4b6d, 0x7630,
+ 0x6f4f, 0x694f, 0x775e, 0x4e53, 0x5c77, 0x5b28, 0x4b78, 0x5f21,
+ 0x5d61, 0x754a, 0x6936, 0x676c, 0x6e6e, 0x7370, 0x5f3f, 0x4c4b,
+ 0x5041, 0x7452, 0x603a, 0x5f40, 0x4e60, 0x5c52, 0x7d6a, 0x5676,
+ 0x6a4a, 0x6869, 0x632c, 0x7350, 0x4a24, 0x5b78, 0x5e47, 0x6b70,
+ 0x7156, 0x6562, 0x4c4c, 0x4b7b, 0x6a63, 0x5f41, 0x566d, 0x6950,
+ 0x6e39, 0x5563, 0x5153, 0x6570, 0x6834, 0x6b43, 0x6a2a, 0x7a7c,
+ 0x7576, 0x703c, 0x7d54, 0x603b, 0x4e43, 0x503a, 0x773a, 0x5873,
+ 0x774d, 0x642e, 0x545f, 0x5067, 0x6c7d, 0x522e, 0x6e6f, 0x5557,
+ 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x4d6c, 0x5c32, 0x506c,
+ 0x4e7d, 0x6e70, 0x4c42, 0x506d, 0x6577, 0x737c, 0x6e22, 0x5933,
+ 0x5874, 0x6937, 0x4e2e, 0x5922, 0x5871, 0x544f, 0x6527, 0x5552,
+ 0x5629, 0x7422, 0x7157, 0x5558, 0x703d, 0x5750, 0x5450, 0x574f,
+ 0x6b6a, 0x7d6b, 0x5b6d, 0x7c45, 0x4b42, 0x7d55, 0x7448, 0x686a,
+ 0x7573, 0x795e, 0x536f, 0x6c53, 0x5d42, 0x6f37, 0x6754, 0x4a4a,
+ 0x597b, 0x7a7d, 0x562a, 0x7478, 0x7777, 0x5c2c, 0x5757, 0x5f22,
+ 0x4e3e, 0x5370, 0x7024, 0x616c, 0x4f67, 0x734b, 0x6d29, 0x4a3e,
+ 0x746f, 0x764e, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x7428, 0x5c78,
+ 0x4b27, 0x5a4e, 0x6066, 0x6d25, 0x6e72, 0x5c79, 0x795c, 0x735c,
+ 0x7872, 0x7479, 0x7c71, 0x503c, 0x5b79, 0x5731, 0x4b7c, 0x7025,
+ 0x4b7d, 0x5574, 0x4d6d, 0x4a25, 0x562b, 0x5042, 0x703e, 0x523d,
+ 0x4c24, 0x7a36, 0x4c4d, 0x5a7a, 0x764f, 0x6938, 0x5875, 0x4c4e,
+ 0x574d, 0x5451, 0x696d, 0x4a6b, 0x5962, 0x7d32, 0x632d, 0x564c,
+ 0x5934, 0x6127, 0x6e53, 0x5043, 0x7d33, 0x5564, 0x4f68, 0x6d43,
+ 0x5032, 0x4e7e, 0x5a28, 0x7850, 0x7d56, 0x7851, 0x7852, 0x5c53,
+ 0x5d62, 0x7b79, 0x5d41, 0x6335, 0x6d5d, 0x4e44, 0x4b21, 0x5d63,
+ 0x7c5d, 0x792f, 0x527b, 0x4f21, 0x6428, 0x7436, 0x6c7e, 0x632e,
+ 0x676d, 0x7d41, 0x5a62, 0x5833, 0x5d64, 0x706f, 0x7671, 0x7a70,
+ 0x5175, 0x5a4f, 0x5c54, 0x5c26, 0x6f3f, 0x4e4f, 0x6059, 0x5956,
+ 0x6c54, 0x6a4b, 0x4a3f, 0x5530, 0x4f69, 0x716d, 0x4c4f, 0x6478,
+ 0x646d, 0x5758, 0x7d27, 0x6a2b, 0x7632, 0x4f70, 0x793d, 0x6674,
+ 0x4b5b, 0x7351, 0x6951, 0x7329, 0x5060, 0x6952, 0x5a63, 0x6252,
+ 0x7622, 0x6174, 0x5a64, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23,
+ 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x4a26, 0x773b, 0x726a,
+ 0x5e48, 0x6953, 0x5e49, 0x7d5e, 0x4a40, 0x796a, 0x514e, 0x6e54,
+ 0x5452, 0x5923, 0x7d28, 0x5759, 0x774e, 0x7a3e, 0x4f56, 0x5770,
+ 0x6b61, 0x7845, 0x5c7a, 0x5d43, 0x795f, 0x676f, 0x7d65, 0x7623,
+ 0x597c, 0x7d29, 0x676e, 0x5565, 0x6f50, 0x4d31, 0x7722, 0x7132,
+ 0x7131, 0x4d32, 0x5a2b, 0x4a27, 0x6362, 0x7b3c, 0x5924, 0x6e3a,
+ 0x7853, 0x7b7a, 0x4f24, 0x5c7b, 0x7663, 0x6d2a, 0x7221, 0x4e61,
+ 0x7a26, 0x7960, 0x6c56, 0x646e, 0x7921, 0x7b6f, 0x796b, 0x6e23,
+ 0x6a2c, 0x4a28, 0x747a, 0x4d56, 0x7c76, 0x7449, 0x7854, 0x7826,
+ 0x5e4a, 0x7246, 0x575a, 0x5350, 0x5845, 0x6a66, 0x735d, 0x645a,
+ 0x7664, 0x7672, 0x5f42, 0x597d, 0x4c76, 0x533a, 0x642f, 0x7961,
+ 0x7026, 0x4b53, 0x603c, 0x744a, 0x547a, 0x7d2a, 0x7962, 0x7437,
+ 0x7d42, 0x7c30, 0x7d6c, 0x4a62, 0x7d3d, 0x6a67, 0x5f43, 0x5152,
+ 0x4e62, 0x5324, 0x7d2b, 0x5f60, 0x7247, 0x6770, 0x506e, 0x732a,
+ 0x5e4b, 0x7638, 0x6175, 0x7133, 0x7723, 0x4a29, 0x4f25, 0x5f44,
+ 0x6130, 0x703f, 0x7624, 0x6336, 0x7a46, 0x506f, 0x7d6d, 0x5d44,
+ 0x7c77, 0x663f, 0x5e2d, 0x7a3f, 0x6571, 0x6d44, 0x5225, 0x7d6e,
+ 0x7536, 0x6176, 0x5e4c, 0x7c5e, 0x6c57, 0x4d5d, 0x5637, 0x4d33,
+ 0x7855, 0x6558, 0x4f6a, 0x4f50, 0x6a4c, 0x6a2e, 0x6a2d, 0x5371,
+ 0x5325, 0x774f, 0x6e24, 0x5024, 0x7222, 0x5070, 0x7223, 0x7778,
+ 0x5033, 0x5b29, 0x533b, 0x4a6c, 0x7126, 0x4b55, 0x7767, 0x4d5e,
+ 0x7724, 0x7840, 0x535d, 0x4c50, 0x4f26, 0x7673, 0x6177, 0x535c,
+ 0x7a7e, 0x7a27, 0x6b59, 0x4f27, 0x6a2f, 0x646f, 0x6939, 0x7158,
+ 0x5858, 0x6072, 0x6634, 0x5c7c, 0x7371, 0x6350, 0x727b, 0x5b46,
+ 0x5071, 0x5072, 0x4f5c, 0x5351, 0x4c31, 0x7758, 0x4b28, 0x6b3c,
+ 0x643e, 0x745c, 0x5c42, 0x7027, 0x6640, 0x4a6d, 0x686b, 0x6568,
+ 0x5c43, 0x6d5e, 0x5372, 0x4c77, 0x4e54, 0x672b, 0x4b43, 0x6131,
+ 0x7732, 0x5373, 0x5352, 0x7540, 0x5f5d, 0x6e73, 0x6771, 0x7d34,
+ 0x7248, 0x7352, 0x6e74, 0x6253, 0x4c51, 0x5f6a, 0x693a, 0x5957,
+ 0x754d, 0x7172, 0x7a47, 0x5978, 0x5442, 0x7665, 0x5d45, 0x6772,
+ 0x6d5f, 0x4a4b, 0x5b7a, 0x6835, 0x5326, 0x7d35, 0x7949, 0x6462,
+ 0x7b3d, 0x5724, 0x4e45, 0x4e55, 0x5666, 0x653d, 0x5e4d, 0x6c73,
+ 0x6d60, 0x6c6c, 0x7b3e, 0x5f6b, 0x6178, 0x793e, 0x5073, 0x602a,
+ 0x6862, 0x6254, 0x527d, 0x6528, 0x5953, 0x535e, 0x7438, 0x773c,
+ 0x5c7d, 0x686c, 0x6467, 0x6377, 0x6c28, 0x7a71, 0x6572, 0x5074,
+ 0x522f, 0x5c65, 0x5025, 0x7134, 0x7c31, 0x4c78, 0x5d46, 0x7a51,
+ 0x775f, 0x7a28, 0x6e75, 0x5e4e, 0x6773, 0x772c, 0x6b44, 0x6d61,
+ 0x602b, 0x5d47, 0x5233, 0x523f, 0x4a4c, 0x7b3f, 0x657d, 0x5d65,
+ 0x584d, 0x6c74, 0x5075, 0x686d, 0x5052, 0x5958, 0x7666, 0x5b2a,
+ 0x7760, 0x5859, 0x7423, 0x745d, 0x6f51, 0x5935, 0x6d2b, 0x6337,
+ 0x6e3b, 0x4d34, 0x6073, 0x6a4d, 0x6c75, 0x686e, 0x4b29, 0x712f,
+ 0x4a4d, 0x6c29, 0x726b, 0x7d6f, 0x7973, 0x6641, 0x6c58, 0x6d2c,
+ 0x6a4e, 0x685f, 0x5e4f, 0x5226, 0x6774, 0x5156, 0x6642, 0x6363,
+ 0x6430, 0x5834, 0x7625, 0x735e, 0x5725, 0x7768, 0x6846, 0x7b66,
+ 0x5d66, 0x5c7e, 0x585a, 0x5a2c, 0x6a30, 0x6338, 0x4a2a, 0x6179,
+ 0x6a31, 0x726c, 0x7a6e, 0x6e55, 0x7974, 0x526c, 0x7b7b, 0x7d70,
+ 0x603d, 0x4e63, 0x7846, 0x5e2e, 0x5f45, 0x653e, 0x6d2d, 0x7a6a,
+ 0x4d6e, 0x6d26, 0x6d2e, 0x706d, 0x5d21, 0x6d2f, 0x7c78, 0x586b,
+ 0x4c79, 0x4d35, 0x7a29, 0x615d, 0x6255, 0x6d4f, 0x5d22, 0x794a,
+ 0x6a68, 0x656d, 0x536b, 0x6954, 0x617a, 0x644c, 0x6164, 0x6847,
+ 0x4e5b, 0x5c55, 0x7735, 0x7c73, 0x7073, 0x4e2f, 0x7135, 0x6f52,
+ 0x6848, 0x6b71, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x6074,
+ 0x4f60, 0x6e25, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x6364, 0x693b,
+ 0x6256, 0x7372, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28,
+ 0x5d23, 0x585b, 0x794e, 0x6955, 0x6351, 0x523c, 0x582c, 0x734c,
+ 0x4d7b, 0x7656, 0x6775, 0x686f, 0x6379, 0x523b, 0x7373, 0x637b,
+ 0x5e50, 0x4e30, 0x5677, 0x7159, 0x7541, 0x5c44, 0x753b, 0x5e51,
+ 0x5c66, 0x5e52, 0x6d62, 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x535f,
+ 0x5374, 0x6133, 0x6134, 0x7453, 0x5f46, 0x6956, 0x5b2b, 0x7626,
+ 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x5a2d, 0x5263, 0x4f51,
+ 0x4b5c, 0x4c7a, 0x4f5d, 0x6829, 0x633b, 0x633a, 0x605a, 0x6e77,
+ 0x5c33, 0x5375, 0x5726, 0x7635, 0x575b, 0x6155, 0x546a, 0x5f23,
+ 0x7d5f, 0x5077, 0x6d54, 0x4b2a, 0x645b, 0x617b, 0x4b22, 0x5360,
+ 0x643f, 0x7b40, 0x5a3e, 0x644d, 0x5639, 0x6f40, 0x617c, 0x7639,
+ 0x5f47, 0x6431, 0x5c67, 0x5c68, 0x7a56, 0x5376, 0x715a, 0x7a72,
+ 0x627d, 0x554f, 0x5078, 0x4d5f, 0x754b, 0x6470, 0x4b2b, 0x5744,
+ 0x627e, 0x5d5a, 0x5a2e, 0x4a6e, 0x5539, 0x6321, 0x6863, 0x732b,
+ 0x4f29, 0x5377, 0x5471, 0x4e64, 0x6872, 0x6575, 0x672e, 0x563a,
+ 0x5f6c, 0x6440, 0x6864, 0x5835, 0x645c, 0x7439, 0x7136, 0x625e,
+ 0x6135, 0x4d6f, 0x7127, 0x4e65, 0x4b5d, 0x5963, 0x732c, 0x5079,
+ 0x6c2b, 0x5e53, 0x7769, 0x7975, 0x615e, 0x4b6e, 0x633c, 0x7856,
+ 0x5b6e, 0x7d71, 0x7736, 0x745e, 0x726d, 0x5b59, 0x7028, 0x617d,
+ 0x5e54, 0x602c, 0x6d63, 0x5361, 0x5f48, 0x5936, 0x7d2c, 0x6f53,
+ 0x6441, 0x786b, 0x5b2c, 0x7c46, 0x582d, 0x763a, 0x5b5f, 0x5353,
+ 0x7847, 0x4a4e, 0x7841, 0x5234, 0x5c34, 0x7a39, 0x4a4f, 0x7c33,
+ 0x6a6a, 0x6a6b, 0x507a, 0x6d64, 0x5d67, 0x5f49, 0x5f6d, 0x6e3c,
+ 0x6f41, 0x4c52, 0x5d24, 0x5f4a, 0x5378, 0x7128, 0x4d37, 0x6f54,
+ 0x645d, 0x5f6e, 0x4b2c, 0x693c, 0x6a6c, 0x5f4b, 0x793f, 0x562f,
+ 0x5546, 0x4f2a, 0x4e29, 0x5678, 0x7137, 0x6e78, 0x5959, 0x735f,
+ 0x7848, 0x4e46, 0x5566, 0x7466, 0x6645, 0x6f55, 0x4b6f, 0x7c5f,
+ 0x5c27, 0x5667, 0x7849, 0x6352, 0x633d, 0x4f61, 0x7040, 0x6c5a,
+ 0x5d57, 0x7b70, 0x6c2c, 0x7029, 0x7a57, 0x7b41, 0x5240, 0x6530,
+ 0x6d65, 0x4b2d, 0x7930, 0x7725, 0x4b2e, 0x5a2f, 0x5836, 0x5327,
+ 0x7b32, 0x7d44, 0x6c2d, 0x7b21, 0x6569, 0x696e, 0x7374, 0x7873,
+ 0x7041, 0x5e2f, 0x7830, 0x7360, 0x672f, 0x5b2d, 0x6635, 0x7928,
+ 0x5d58, 0x6859, 0x6f56, 0x5362, 0x625f, 0x7c60, 0x5748, 0x7d2d,
+ 0x5f6f, 0x4c53, 0x5379, 0x5470, 0x5b47, 0x5e55, 0x7074, 0x5550,
+ 0x6559, 0x7c47, 0x5c56, 0x6260, 0x5a30, 0x7323, 0x536c, 0x744b,
+ 0x7d45, 0x637d, 0x7931, 0x507b, 0x6c5b, 0x753c, 0x7224, 0x584e,
+ 0x584f, 0x7577, 0x7661, 0x5237, 0x7b6c, 0x5d48, 0x6468, 0x5241,
+ 0x7857, 0x563b, 0x5e56, 0x773d, 0x6c2e, 0x5061, 0x6075, 0x6a33,
+ 0x4e56, 0x4c25, 0x6c76, 0x6261, 0x633e, 0x7c48, 0x4d70, 0x7976,
+ 0x5f70, 0x653f, 0x4e3f, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x794f,
+ 0x6b5a, 0x4a41, 0x5238, 0x4d71, 0x6353, 0x7d66, 0x666d, 0x637a,
+ 0x702a, 0x7950, 0x7c62, 0x7827, 0x6165, 0x6e79, 0x6776, 0x6a6d,
+ 0x7c34, 0x7542, 0x575c, 0x7075, 0x5d68, 0x536d, 0x757c, 0x5a3f,
+ 0x4c7b, 0x537a, 0x7424, 0x6f57, 0x5443, 0x7b63, 0x7b6d, 0x602d,
+ 0x6a6e, 0x7b33, 0x6442, 0x7667, 0x525d, 0x5f4c, 0x7c49, 0x6529,
+ 0x6076, 0x7633, 0x617e, 0x4b70, 0x6a6f, 0x6a70, 0x5a40, 0x7834,
+ 0x6b72, 0x6443, 0x6957, 0x6471, 0x4a6f, 0x4e57, 0x7c4a, 0x7361,
+ 0x4b44, 0x6365, 0x4b45, 0x6a34, 0x693d, 0x5749, 0x6b5b, 0x6d31,
+ 0x4c43, 0x773e, 0x7c4b, 0x7874, 0x5937, 0x7353, 0x7354, 0x7764,
+ 0x7751, 0x5837, 0x4e31, 0x4a42, 0x7b34, 0x4b46, 0x7076, 0x5567,
+ 0x6a50, 0x4c54, 0x4b2f, 0x742a, 0x692f, 0x7543, 0x6958, 0x5d69,
+ 0x7173, 0x557b, 0x5e3b, 0x747b, 0x7d73, 0x7d72, 0x7726, 0x5d49,
+ 0x5453, 0x4c28, 0x5a41, 0x4c55, 0x5964, 0x7a4a, 0x6563, 0x533c,
+ 0x4a70, 0x5044, 0x4a50, 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x5157,
+ 0x7324, 0x547b, 0x7c63, 0x7a58, 0x7355, 0x4f2b, 0x6b73, 0x557c,
+ 0x5354, 0x4d7c, 0x5966, 0x6279, 0x6221, 0x6b54, 0x6077, 0x6432,
+ 0x4c7c, 0x7b64, 0x742b, 0x503d, 0x4a71, 0x6f38, 0x5740, 0x6e7a,
+ 0x7d74, 0x5363, 0x7b42, 0x5568, 0x5b2e, 0x6136, 0x7837, 0x603f,
+ 0x7b43, 0x5d6a, 0x6222, 0x6e26, 0x7668, 0x7675, 0x5d4a, 0x5062,
+ 0x5d26, 0x5d6b, 0x6479, 0x632f, 0x507c, 0x747c, 0x4c3c, 0x776a,
+ 0x6564, 0x5f71, 0x7761, 0x7977, 0x6f39, 0x7858, 0x7929, 0x7859,
+ 0x6e3d, 0x5846, 0x6463, 0x754e, 0x5d59, 0x5967, 0x5239, 0x5543,
+ 0x5a65, 0x5a50, 0x5159, 0x4e58, 0x4b5e, 0x742c, 0x5a7b, 0x7669,
+ 0x6873, 0x4f2c, 0x7070, 0x747d, 0x5b48, 0x4e40, 0x6354, 0x514f,
+ 0x7175, 0x4d72, 0x4f6b, 0x4d38, 0x6326, 0x515a, 0x7225, 0x7226,
+ 0x644e, 0x537b, 0x7129, 0x7249, 0x6f58, 0x6649, 0x5838, 0x7a73,
+ 0x7335, 0x7824, 0x5173, 0x6648, 0x785a, 0x5c69, 0x5e57, 0x4b5f,
+ 0x4f6c, 0x745f, 0x5174, 0x523a, 0x5f72, 0x6137, 0x6223, 0x537c,
+ 0x6d66, 0x5b49, 0x647a, 0x4f5e, 0x4e50, 0x5553, 0x7375, 0x772e,
+ 0x6f48, 0x4d73, 0x754f, 0x6573, 0x7042, 0x4a51, 0x6a71, 0x5026,
+ 0x595a, 0x702b, 0x6b67, 0x6540, 0x7c35, 0x6444, 0x4c29, 0x7d46,
+ 0x6a35, 0x652a, 0x5f3a, 0x615f, 0x5a51, 0x6138, 0x6874, 0x537d,
+ 0x6224, 0x724a, 0x5a66, 0x7733, 0x7d4d, 0x7336, 0x6e57, 0x7544,
+ 0x5824, 0x7227, 0x5938, 0x5939, 0x6f49, 0x564e, 0x774b, 0x5f2e,
+ 0x6875, 0x5235, 0x5355, 0x744c, 0x5a7c, 0x5968, 0x776b, 0x7549,
+ 0x733c, 0x5a52, 0x5335, 0x6836, 0x564f, 0x743a, 0x7749, 0x4c2a,
+ 0x7043, 0x4c56, 0x5053, 0x533d, 0x5b7b, 0x4b60, 0x5364, 0x7677,
+ 0x553a, 0x734d, 0x4b61, 0x6b74, 0x742d, 0x7c2a, 0x776c, 0x6876,
+ 0x5a67, 0x774c, 0x6541, 0x606e, 0x557d, 0x4e66, 0x7c2b, 0x553b,
+ 0x7228, 0x6225, 0x4d39, 0x6a72, 0x4b47, 0x4d74, 0x5b2f, 0x6f59,
+ 0x4d3a, 0x7c79, 0x5f73, 0x4e67, 0x5a42, 0x4f2d, 0x6779, 0x7828,
+ 0x7362, 0x4a72, 0x5f24, 0x5444, 0x4c57, 0x6542, 0x4d3b, 0x6f5a,
+ 0x6e58, 0x5d27, 0x6226, 0x6040, 0x5630, 0x784a, 0x7c7a, 0x597e,
+ 0x5e30, 0x5d6c, 0x5a68, 0x5460, 0x5679, 0x4d57, 0x5e58, 0x7278,
+ 0x6456, 0x5045, 0x742e, 0x5d28, 0x6d45, 0x7356, 0x5e59, 0x6366,
+ 0x5328, 0x5b30, 0x655a, 0x633f, 0x5b31, 0x5569, 0x6041, 0x6f5b,
+ 0x7069, 0x5732, 0x507d, 0x5969, 0x507e, 0x6c6d, 0x5329, 0x7229,
+ 0x7044, 0x6262, 0x696f, 0x7951, 0x6959, 0x685a, 0x5a43, 0x5a44,
+ 0x5445, 0x677a, 0x4d60, 0x6330, 0x5b32, 0x7b44, 0x7363, 0x5925,
+ 0x7b67, 0x5d4b, 0x5054, 0x6636, 0x602e, 0x7d5a, 0x5c35, 0x6078,
+ 0x6731, 0x7570, 0x585c, 0x6d46, 0x6139, 0x6340, 0x7940, 0x6970,
+ 0x595b, 0x7364, 0x5c36, 0x6469, 0x7045, 0x6341, 0x7c4c, 0x7c4d,
+ 0x724b, 0x724c, 0x644f, 0x715b, 0x7a59, 0x7138, 0x7d75, 0x6079,
+ 0x677b, 0x7c37, 0x7c64, 0x7b45, 0x6367, 0x5839, 0x7678, 0x5c45,
+ 0x4c58, 0x602f, 0x7467, 0x6f5c, 0x4f7c, 0x6f5d, 0x722a, 0x7d3e,
+ 0x4a2c, 0x7d3b, 0x7d47, 0x6732, 0x6a51, 0x5f74, 0x516c, 0x645e,
+ 0x6543, 0x5926, 0x4d3c, 0x7365, 0x6d55, 0x593a, 0x6d67, 0x7b35,
+ 0x786c, 0x6067, 0x4c59, 0x5446, 0x6725, 0x5575, 0x533e, 0x7c7b,
+ 0x6472, 0x5f75, 0x6878, 0x786d, 0x4e47, 0x7d76, 0x6858, 0x4d58,
+ 0x6756, 0x4c5a, 0x4a63, 0x5f76, 0x7047, 0x7046, 0x583a, 0x7174,
+ 0x7470, 0x754c, 0x7c65, 0x6a45, 0x6a73, 0x5d5b, 0x5c57, 0x5e7d,
+ 0x7279, 0x5547, 0x5850, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668,
+ 0x594a, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x7139, 0x5a53,
+ 0x766a, 0x4f75, 0x7d2e, 0x4a52, 0x5f34, 0x575d, 0x7a3a, 0x6e27,
+ 0x753d, 0x7875, 0x6d68, 0x5461, 0x5123, 0x6156, 0x7978, 0x5b4a,
+ 0x4b79, 0x5454, 0x595c, 0x6e3e, 0x776d, 0x526e, 0x6166, 0x7779,
+ 0x5d6d, 0x685b, 0x5b33, 0x5177, 0x6030, 0x5462, 0x7657, 0x5779,
+ 0x585d, 0x4d7d, 0x722b, 0x4d3d, 0x7842, 0x722c, 0x4a2d, 0x4a2e,
+ 0x4f2e, 0x6342, 0x5c37, 0x5b5a, 0x593b, 0x4a73, 0x7653, 0x6678,
+ 0x6a75, 0x6a76, 0x7679, 0x4f2f, 0x4a53, 0x4a2f, 0x5230, 0x713a,
+ 0x5733, 0x6343, 0x737d, 0x5e5a, 0x5e5b, 0x6f5e, 0x6263, 0x6e7b,
+ 0x5f77, 0x574a, 0x4e68, 0x5b5b, 0x713b, 0x6971, 0x7a37, 0x5046,
+ 0x4c2b, 0x6e28, 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x6450, 0x726e,
+ 0x5455, 0x5f4d, 0x7c38, 0x5150, 0x724d, 0x7752, 0x4a54, 0x5559,
+ 0x585e, 0x4d59, 0x6e29, 0x763c, 0x4c5b, 0x7049, 0x7c7c, 0x6849,
+ 0x747e, 0x677c, 0x575e, 0x5e5c, 0x702c, 0x4c7e, 0x4d61, 0x613a,
+ 0x5b6f, 0x5a32, 0x5125, 0x5c38, 0x5876, 0x5124, 0x4d62, 0x5c6a,
+ 0x7077, 0x704a, 0x503e, 0x5d5c, 0x5456, 0x5356, 0x6d50, 0x4d21,
+ 0x5f35, 0x5f78, 0x5421, 0x4e32, 0x684a, 0x6b75, 0x6355, 0x7550,
+ 0x7521, 0x5927, 0x652b, 0x664b, 0x7571, 0x6545, 0x7923, 0x605b,
+ 0x766b, 0x4b71, 0x596a, 0x7522, 0x5751, 0x5178, 0x6a78, 0x6a79,
+ 0x5a33, 0x6f5f, 0x716f, 0x6576, 0x6e3f, 0x6264, 0x503f, 0x7a2c,
+ 0x7551, 0x6733, 0x693e, 0x724e, 0x5b34, 0x7c4e, 0x5d6e, 0x6734,
+ 0x5734, 0x7734, 0x4d3e, 0x5a69, 0x4f30, 0x7759, 0x7366, 0x4e59,
+ 0x4e2a, 0x4b48, 0x5027, 0x704b, 0x5047, 0x6445, 0x5b60, 0x555a,
+ 0x5727, 0x6e40, 0x7876, 0x7552, 0x6d69, 0x593c, 0x6546, 0x7523,
+ 0x5a54, 0x6227, 0x7b7c, 0x715c, 0x4a74, 0x687a, 0x4e69, 0x6978,
+ 0x6265, 0x5039, 0x5472, 0x5126, 0x5f4e, 0x7c74, 0x532a, 0x4c2c,
+ 0x6f60, 0x6565, 0x5055, 0x5b7c, 0x7c66, 0x4b7e, 0x6d6a, 0x5e31,
+ 0x7963, 0x5422, 0x4f76, 0x5650, 0x556a, 0x716e, 0x7a4b, 0x6521,
+ 0x5531, 0x4f6d, 0x6d6b, 0x5532, 0x553c, 0x7d62, 0x732d, 0x7d5b,
+ 0x6930, 0x5127, 0x7d63, 0x4e33, 0x7d64, 0x7a4e, 0x4a30, 0x7727,
+ 0x4f31, 0x6622, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b,
+ 0x6860, 0x6128, 0x5576, 0x4f7d, 0x5e5d, 0x5951, 0x646a, 0x724f,
+ 0x773f, 0x6266, 0x6228, 0x6356, 0x6d51, 0x6979, 0x5631, 0x5e32,
+ 0x6068, 0x532b, 0x6b5c, 0x5f2f, 0x4a43, 0x6e7c, 0x7d43, 0x6b76,
+ 0x4f32, 0x596c, 0x593d, 0x585f, 0x5438, 0x6b3e, 0x5d6f, 0x5d70,
+ 0x5d71, 0x5d72, 0x593e, 0x7b46, 0x4f33, 0x6e7d, 0x642b, 0x5a45,
+ 0x586c, 0x5128, 0x6229, 0x5e3c, 0x6735, 0x5b70, 0x6f62, 0x7170,
+ 0x4f34, 0x5b71, 0x6031, 0x5f25, 0x7952, 0x677d, 0x6623, 0x7b71,
+ 0x4b30, 0x722e, 0x4d67, 0x685c, 0x6757, 0x7740, 0x5063, 0x5a21,
+ 0x4c3d, 0x5129, 0x5d4c, 0x637e, 0x512a, 0x682a, 0x6a36, 0x797a,
+ 0x664c, 0x7658, 0x5447, 0x594b, 0x5952, 0x534b, 0x5877, 0x5a29,
+ 0x7578, 0x5e5e, 0x722f, 0x7829, 0x5848, 0x6e41, 0x7941, 0x5d73,
+ 0x6a7a, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, 0x7c4f, 0x7b22,
+ 0x605c, 0x743b, 0x5a55, 0x7932, 0x7b72, 0x5b76, 0x5e5f, 0x5b72,
+ 0x785c, 0x776e, 0x6b68, 0x527a, 0x713c, 0x7a5a, 0x5a6a, 0x5a46,
+ 0x7741, 0x6736, 0x6547, 0x562c, 0x5c47, 0x6129, 0x622a, 0x5526,
+ 0x5457, 0x7250, 0x6a7b, 0x605d, 0x7b73, 0x713d, 0x6267, 0x7d57,
+ 0x4e48, 0x6a37, 0x7c40, 0x7d67, 0x776f, 0x5735, 0x6f3a, 0x715d,
+ 0x5e33, 0x684b, 0x785d, 0x7b47, 0x5548, 0x575f, 0x5d29, 0x6931,
+ 0x7a2d, 0x7659, 0x7a74, 0x782a, 0x666e, 0x4c5c, 0x613c, 0x606f,
+ 0x693f, 0x7c7d, 0x664e, 0x6157, 0x664f, 0x7471, 0x6473, 0x647b,
+ 0x7964, 0x6f63, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, 0x577a,
+ 0x7b48, 0x6257, 0x5423, 0x7078, 0x5728, 0x6167, 0x533f, 0x6f64,
+ 0x5745, 0x6b62, 0x7c67, 0x6422, 0x6268, 0x6650, 0x7b68, 0x7468,
+ 0x6574, 0x743c, 0x7455, 0x5f36, 0x7c39, 0x6e42, 0x4a75, 0x6f65,
+ 0x4b62, 0x5424, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x605e, 0x7634,
+ 0x6a52, 0x797b, 0x6042, 0x4a64, 0x6737, 0x6a7d, 0x595d, 0x5a34,
+ 0x6e2a, 0x7b69, 0x5b4b, 0x5a35, 0x713e, 0x532c, 0x7b49, 0x5f4f,
+ 0x5340, 0x6357, 0x6f66, 0x7c50, 0x6940, 0x7553, 0x6c5c, 0x7737,
+ 0x6a38, 0x5179, 0x5c48, 0x6a39, 0x715e, 0x5736, 0x4f35, 0x5928,
+ 0x6c6e, 0x5d2a, 0x4d22, 0x682e, 0x613d, 0x7251, 0x6941, 0x527c,
+ 0x5b35, 0x7367, 0x587e, 0x7c51, 0x6d32, 0x742f, 0x7b23, 0x7c41,
+ 0x6e2b, 0x5425, 0x7472, 0x6e59, 0x7b4a, 0x4d63, 0x583b, 0x655b,
+ 0x7877, 0x7654, 0x5729, 0x4b49, 0x6651, 0x704c, 0x582e, 0x7953,
+ 0x557e, 0x583c, 0x7230, 0x622b, 0x7368, 0x6f42, 0x6d6c, 0x6738,
+ 0x5a7e, 0x4c3e, 0x727c, 0x5a6b, 0x6258, 0x6d56, 0x5651, 0x6033,
+ 0x7c52, 0x6b48, 0x5341, 0x704d, 0x4f77, 0x6d52, 0x5458, 0x5c49,
+ 0x5771, 0x5f3b, 0x7325, 0x744d, 0x713f, 0x7831, 0x697a, 0x7b4b,
+ 0x4a55, 0x7954, 0x774a, 0x5648, 0x7c68, 0x733d, 0x6e7e, 0x677e,
+ 0x5342, 0x5336, 0x4c2d, 0x767a, 0x5632, 0x5258, 0x6758, 0x6325,
+ 0x6739, 0x702d, 0x7b4c, 0x6b21, 0x5426, 0x7b4d, 0x553d, 0x715f,
+ 0x767b, 0x5e34, 0x556b, 0x6548, 0x7b24, 0x5439, 0x5e61, 0x6423,
+ 0x5737, 0x786e, 0x5e35, 0x5652, 0x7955, 0x673a, 0x6b55, 0x5577,
+ 0x6f67, 0x613e, 0x7a2e, 0x5669, 0x566e, 0x673b, 0x6c4b, 0x5533,
+ 0x4e34, 0x7b25, 0x616e, 0x7728, 0x7b4e, 0x583d, 0x7b7d, 0x7c69,
+ 0x4f36, 0x6d47, 0x6e2c, 0x4c5d, 0x7627, 0x667a, 0x7524, 0x7d5c,
+ 0x6d33, 0x4e49, 0x6f68, 0x613f, 0x7a5b, 0x4b63, 0x7729, 0x7b26,
+ 0x5c39, 0x7140, 0x6d48, 0x6f43, 0x562d, 0x7d4e, 0x6821, 0x7b74,
+ 0x5527, 0x7176, 0x6653, 0x4c5e, 0x7832, 0x5c6b, 0x7d36, 0x656a,
+ 0x7160, 0x5b4c, 0x5d4d, 0x5448, 0x596d, 0x7525, 0x667b, 0x6654,
+ 0x7d48, 0x5621, 0x7d3f, 0x7c53, 0x6f21, 0x673c, 0x516e, 0x6655,
+ 0x6972, 0x5f30, 0x5860, 0x7c3a, 0x7d2f, 0x704e, 0x5b61, 0x6549,
+ 0x6d34, 0x6043, 0x6358, 0x697b, 0x6a28, 0x7d37, 0x7b27, 0x6942,
+ 0x7d77, 0x6259, 0x5c6c, 0x6822, 0x6670, 0x7d78, 0x7d79, 0x763f,
+ 0x6727, 0x6657, 0x5473, 0x5449, 0x567a, 0x5772, 0x6140, 0x5b62,
+ 0x6658, 0x673d, 0x704f, 0x733e, 0x622c, 0x7537, 0x6070, 0x7d38,
+ 0x6368, 0x5427, 0x687c, 0x7a52, 0x786f, 0x5653, 0x5534, 0x7050,
+ 0x7770, 0x6e33, 0x6a3a, 0x6a53, 0x6d49, 0x5d2b, 0x652c, 0x7d21,
+ 0x5f50, 0x6c33, 0x5f51, 0x6d6d, 0x7838, 0x777a, 0x782b, 0x7460,
+ 0x543a, 0x6433, 0x695a, 0x5e36, 0x593f, 0x5940, 0x566f, 0x594c,
+ 0x5a2a, 0x5f65, 0x7765, 0x4c32, 0x5f79, 0x5760, 0x543b, 0x7d7a,
+ 0x4c33, 0x5b73, 0x5f52, 0x4e4a, 0x6e5a, 0x6464, 0x7b4f, 0x4f37,
+ 0x6e43, 0x4e6a, 0x622d, 0x5761, 0x7a75, 0x5549, 0x782c, 0x6759,
+ 0x7369, 0x586d, 0x6344, 0x7071, 0x6865, 0x607a, 0x6e44, 0x595e,
+ 0x6b22, 0x6b23, 0x7c42, 0x6a3b, 0x682b, 0x5e62, 0x6d6f, 0x6823,
+ 0x4f71, 0x543c, 0x7c6a, 0x673e, 0x7c72, 0x5634, 0x622e, 0x5337,
+ 0x7a4c, 0x7a5c, 0x6d35, 0x6163, 0x682c, 0x685d, 0x6f69, 0x743d,
+ 0x4f38, 0x695b, 0x512c, 0x5a47, 0x6b49, 0x684c, 0x5e37, 0x563c,
+ 0x5365, 0x7a5d, 0x5a56, 0x4a31, 0x5a48, 0x5f26, 0x7933, 0x7252,
+ 0x4a44, 0x4e4b, 0x4d75, 0x7d30, 0x5528, 0x7141, 0x6269, 0x5c4a,
+ 0x6c34, 0x7a40, 0x7b28, 0x5028, 0x5a6c, 0x596e, 0x607b, 0x6f6a,
+ 0x7a5e, 0x6044, 0x4f39, 0x554a, 0x5762, 0x622f, 0x5738, 0x684d,
+ 0x765a, 0x6f22, 0x625a, 0x767c, 0x7b50, 0x512d, 0x4d64, 0x512e,
+ 0x5c6d, 0x684e, 0x7079, 0x4e35, 0x667c, 0x577b, 0x5056, 0x5d75,
+ 0x7771, 0x767d, 0x5b77, 0x7b6a, 0x695c, 0x5941, 0x7572, 0x6045,
+ 0x6a54, 0x7942, 0x6a3c, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x5f7a,
+ 0x6322, 0x5739, 0x6943, 0x687d, 0x682f, 0x7253, 0x7b29, 0x5825,
+ 0x554b, 0x5048, 0x512f, 0x5763, 0x6046, 0x5622, 0x6d70, 0x5773,
+ 0x7c54, 0x5a57, 0x4c5f, 0x7254, 0x5130, 0x4c60, 0x5b7d, 0x733f,
+ 0x7051, 0x7c3b, 0x6230, 0x6625, 0x625b, 0x5f5e, 0x6047, 0x726f,
+ 0x4c61, 0x566a, 0x6742, 0x4e36, 0x7340, 0x4d7e, 0x7b52, 0x7878,
+ 0x777b, 0x683f, 0x6837, 0x6d36, 0x5c3a, 0x4c34, 0x7177, 0x6838,
+ 0x4a76, 0x6424, 0x7456, 0x5f66, 0x5f27, 0x5f67, 0x6141, 0x6944,
+ 0x5c4b, 0x6945, 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x517b, 0x6f24,
+ 0x6f6b, 0x5034, 0x4d23, 0x6866, 0x6f25, 0x534c, 0x5a6d, 0x573a,
+ 0x7255, 0x7565, 0x596f, 0x7934, 0x5554, 0x7d4f, 0x5b63, 0x7161,
+ 0x6c36, 0x7b7e, 0x5357, 0x5131, 0x4b31, 0x5132, 0x4b32, 0x7142,
+ 0x7461, 0x7935, 0x6143, 0x6142, 0x6b77, 0x5f28, 0x4b4a, 0x6639,
+ 0x785e, 0x792a, 0x4a77, 0x6d37, 0x5338, 0x7256, 0x5459, 0x6e45,
+ 0x7270, 0x4a32, 0x5c3b, 0x7178, 0x6c37, 0x654a, 0x7640, 0x7d5d,
+ 0x5463, 0x4c62, 0x7754, 0x5765, 0x5343, 0x5826, 0x7641, 0x5d76,
+ 0x4d40, 0x655c, 0x654b, 0x6144, 0x6830, 0x7430, 0x736a, 0x5a6e,
+ 0x573b, 0x6231, 0x572a, 0x567b, 0x645f, 0x4a56, 0x6b28, 0x5b7e,
+ 0x7642, 0x6f3b, 0x547d, 0x6048, 0x6839, 0x6f26, 0x4d24, 0x5474,
+ 0x5b21, 0x5b5c, 0x5b5d, 0x6e5c, 0x4b4b, 0x7c55, 0x4e6b, 0x4d41,
+ 0x7b53, 0x792b, 0x7554, 0x5929, 0x695d, 0x5b4d, 0x5d4e, 0x6743,
+ 0x6c4c, 0x796c, 0x4b4c, 0x607c, 0x5428, 0x6d53, 0x586f, 0x7257,
+ 0x4a78, 0x5a6f, 0x5654, 0x594d, 0x586e, 0x7241, 0x5f53, 0x5a70,
+ 0x626a, 0x607d, 0x5878, 0x772f, 0x5a36, 0x4a57, 0x7258, 0x5879,
+ 0x7a5f, 0x4f6f, 0x5942, 0x7052, 0x6451, 0x7337, 0x7a60, 0x6f6c,
+ 0x6232, 0x543d, 0x594e, 0x7462, 0x5429, 0x4d42, 0x675a, 0x7259,
+ 0x592a, 0x583e, 0x5c2d, 0x626b, 0x567c, 0x4a79, 0x545a, 0x7457,
+ 0x4c21, 0x4f3a, 0x7538, 0x5943, 0x5068, 0x6345, 0x6b78, 0x7231,
+ 0x4f3b, 0x532d, 0x6861, 0x4e6c, 0x6034, 0x5e63, 0x5d77, 0x7232,
+ 0x7376, 0x765b, 0x577e, 0x785f, 0x7772, 0x5029, 0x665a, 0x7526,
+ 0x573c, 0x4c63, 0x665b, 0x5d5d, 0x5133, 0x6f6d, 0x565e, 0x6474,
+ 0x616f, 0x5d78, 0x684f, 0x4a65, 0x5c21, 0x6035, 0x7c2c, 0x7c2d,
+ 0x5827, 0x6d38, 0x5b36, 0x5670, 0x732f, 0x4d25, 0x5a71, 0x5828,
+ 0x4c64, 0x5134, 0x4a58, 0x5a72, 0x7527, 0x7528, 0x6626, 0x556c,
+ 0x5578, 0x5a73, 0x6346, 0x5e64, 0x5e65, 0x5135, 0x5136, 0x5137,
+ 0x7233, 0x695e, 0x7053, 0x7234, 0x7054, 0x4b64, 0x7b54, 0x7566,
+ 0x636a, 0x5e66, 0x5f54, 0x7879, 0x702e, 0x5138, 0x565f, 0x5057,
+ 0x7c21, 0x6f6e, 0x5c58, 0x695f, 0x655d, 0x7d7b, 0x6049, 0x5649,
+ 0x542a, 0x654c, 0x6960, 0x5058, 0x7c22, 0x543e, 0x6233, 0x5e67,
+ 0x5c3c, 0x5236, 0x7555, 0x4e21, 0x7529, 0x5d79, 0x5d7a, 0x7055,
+ 0x765f, 0x725a, 0x646b, 0x7271, 0x6c39, 0x7d7c, 0x612a, 0x4a59,
+ 0x6f6f, 0x752a, 0x6c79, 0x782d, 0x7242, 0x7643, 0x5752, 0x7922,
+ 0x7056, 0x707a, 0x7660, 0x6973, 0x7243, 0x542b, 0x4a33, 0x4d26,
+ 0x4d43, 0x4d5a, 0x594f, 0x7644, 0x6e5d, 0x6744, 0x6234, 0x5f62,
+ 0x675b, 0x6831, 0x7c2e, 0x654d, 0x7a6b, 0x4f3c, 0x4f62, 0x4d76,
+ 0x6f70, 0x743e, 0x544d, 0x7338, 0x6921, 0x7272, 0x736b, 0x7057,
+ 0x4f57, 0x4f5f, 0x6840, 0x6841, 0x4f63, 0x6922, 0x502a, 0x7341,
+ 0x502b, 0x5464, 0x6f3c, 0x5821, 0x595f, 0x7357, 0x5c3d, 0x4c65,
+ 0x6d71, 0x7162, 0x545b, 0x6235, 0x4a66, 0x532e, 0x4c66, 0x7153,
+ 0x7567, 0x4a5a, 0x7b6e, 0x6145, 0x5f69, 0x6e5e, 0x7742, 0x5822,
+ 0x5d2c, 0x702f, 0x563d, 0x612b, 0x7936, 0x5475, 0x5049, 0x6f27,
+ 0x626c, 0x5b6a, 0x4e4c, 0x7568, 0x7755, 0x534d, 0x737e, 0x5035,
+ 0x607e, 0x5f7b, 0x665d, 0x6824, 0x4b4d, 0x6f28, 0x6e34, 0x5a58,
+ 0x5139, 0x5f29, 0x7330, 0x4c44, 0x4e37, 0x6f29, 0x5f55, 0x6d57,
+ 0x6e46, 0x6f3d, 0x7c56, 0x5b74, 0x6f2a, 0x7839, 0x7569, 0x6359,
+ 0x6146, 0x543f, 0x5e68, 0x706a, 0x7342, 0x532f, 0x4a5b, 0x7c57,
+ 0x6d58, 0x6147, 0x7458, 0x5633, 0x5d2d, 0x553e, 0x7143, 0x6e5f,
+ 0x566b, 0x7459, 0x5766, 0x5a37, 0x5d7b, 0x5d4f, 0x5823, 0x5a59,
+ 0x7058, 0x6f44, 0x6158, 0x7154, 0x6d72, 0x555b, 0x555c, 0x7344,
+ 0x4b57, 0x6236, 0x6f71, 0x7b55, 0x5358, 0x5d50, 0x7059, 0x4b33,
+ 0x555d, 0x4d27, 0x502c, 0x513a, 0x7144, 0x6533, 0x7b75, 0x6961,
+ 0x7d60, 0x7c3c, 0x5a22, 0x5a23, 0x5221, 0x526f, 0x626d, 0x5e69,
+ 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x6148, 0x5b37, 0x5f63, 0x6d39,
+ 0x7145, 0x734f, 0x572b, 0x612c, 0x636b, 0x6e47, 0x6149, 0x4a7a,
+ 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x4c3f, 0x4e6d, 0x5529,
+ 0x7a62, 0x5065, 0x6b56, 0x6c5f, 0x5f7c, 0x7756, 0x5e6a, 0x4b34,
+ 0x6f3e, 0x4c35, 0x4f3d, 0x6f72, 0x6237, 0x4c68, 0x707c, 0x5660,
+ 0x7146, 0x6238, 0x6b2b, 0x4b35, 0x5851, 0x744e, 0x7377, 0x5746,
+ 0x513b, 0x772a, 0x6d4a, 0x5753, 0x587a, 0x7645, 0x514c, 0x5d7c,
+ 0x5f7d, 0x7965, 0x604a, 0x727d, 0x5330, 0x7473, 0x5a49, 0x665e,
+ 0x783a, 0x6850, 0x587b, 0x6a55, 0x5623, 0x7646, 0x725b, 0x647c,
+ 0x6832, 0x5a5a, 0x725c, 0x7b56, 0x6932, 0x6e2d, 0x7a63, 0x5c6e,
+ 0x756a, 0x6660, 0x707d, 0x572c, 0x7545, 0x6e60, 0x5b65, 0x5d5e,
+ 0x5970, 0x6923, 0x7179, 0x7244, 0x604b, 0x6924, 0x6239, 0x6331,
+ 0x7c6b, 0x4d28, 0x4c36, 0x705b, 0x663a, 0x4d29, 0x7343, 0x6159,
+ 0x6f2b, 0x6745, 0x6069, 0x7345, 0x5440, 0x553f, 0x5d2e, 0x797c,
+ 0x4c40, 0x6522, 0x4e38, 0x5852, 0x7956, 0x712a, 0x4e51, 0x7647,
+ 0x5b6b, 0x5f7e, 0x5861, 0x7773, 0x5767, 0x547e, 0x513c, 0x654f,
+ 0x4b36, 0x5a38, 0x4d44, 0x563e, 0x623a, 0x4f58, 0x604c, 0x6b79,
+ 0x7d7d, 0x5768, 0x4b58, 0x6962, 0x683a, 0x6347, 0x6c4d, 0x6c4e,
+ 0x563f, 0x6327, 0x5f56, 0x7d68, 0x6e61, 0x7628, 0x5d7d, 0x783b,
+ 0x6851, 0x7957, 0x4e6e, 0x6c4f, 0x6925, 0x5655, 0x4d45, 0x6d3a,
+ 0x513d, 0x4f3e, 0x6c3b, 0x5231, 0x4c69, 0x5944, 0x697c, 0x513e,
+ 0x6c3c, 0x652d, 0x7730, 0x4c6a, 0x5344, 0x5640, 0x567d, 0x6121,
+ 0x5e3d, 0x7629, 0x5a24, 0x5624, 0x7546, 0x6122, 0x6946, 0x7245,
+ 0x7469, 0x566c, 0x6b53, 0x6c3d, 0x625c, 0x5e6b, 0x705c, 0x6b3f,
+ 0x574e, 0x513f, 0x752b, 0x797d, 0x4a5c, 0x4d46, 0x7236, 0x5d7e,
+ 0x4c37, 0x5b38, 0x5069, 0x4e5d, 0x6b40, 0x7d22, 0x784b, 0x6a56,
+ 0x7130, 0x5b4e, 0x7743, 0x5b4f, 0x4b24, 0x7860, 0x7b57, 0x6b4a,
+ 0x6021, 0x4e4d, 0x545c, 0x7d58, 0x5276, 0x7237, 0x7a76, 0x762a,
+ 0x7a77, 0x5866, 0x7431, 0x6852, 0x4a45, 0x4c6b, 0x626e, 0x623b,
+ 0x772d, 0x7861, 0x736c, 0x5e21, 0x647d, 0x636c, 0x5d2f, 0x5d30,
+ 0x4b37, 0x6853, 0x6123, 0x5260, 0x707e, 0x6926, 0x4b72, 0x6d73,
+ 0x5c59, 0x604d, 0x775a, 0x5b39, 0x4c2e, 0x5a5b, 0x4d47, 0x5d31,
+ 0x582f, 0x6323, 0x4e6f, 0x7273, 0x7833, 0x604e, 0x757d, 0x6b6c,
+ 0x5345, 0x7c6c, 0x525b, 0x546b, 0x5e22, 0x6566, 0x7030, 0x5544,
+ 0x6d74, 0x636d, 0x6842, 0x6d75, 0x577c, 0x6d3b, 0x762b, 0x7238,
+ 0x7648, 0x5366, 0x725d, 0x4f3f, 0x6b2c, 0x4f40, 0x6628, 0x7d69,
+ 0x4f41, 0x605f, 0x5e6c, 0x6022, 0x743f, 0x626f, 0x5971, 0x7147,
+ 0x4b38, 0x797e, 0x5b3a, 0x5a75, 0x766c, 0x5a5c, 0x7a64, 0x604f,
+ 0x5d32, 0x6629, 0x6f73, 0x736d, 0x6b7a, 0x7966, 0x4a5d, 0x555e,
+ 0x4a5e, 0x5f64, 0x667d, 0x752c, 0x6475, 0x6963, 0x6d4b, 0x4f64,
+ 0x5853, 0x5d33, 0x546c, 0x7239, 0x5f37, 0x4b4e, 0x7b58, 0x5059,
+ 0x5d52, 0x7774, 0x675c, 0x6425, 0x7c23, 0x5b3b, 0x723a, 0x697d,
+ 0x504a, 0x7556, 0x5945, 0x6434, 0x6d27, 0x6a3d, 0x667e, 0x7744,
+ 0x752d, 0x5960, 0x4a34, 0x7862, 0x4f42, 0x6c3e, 0x6534, 0x4d48,
+ 0x6e48, 0x6748, 0x4d49, 0x7937, 0x7168, 0x5972, 0x5b75, 0x4a35,
+ 0x5946, 0x5849, 0x592b, 0x6d3c, 0x5854, 0x5c5a, 0x623c, 0x7c6d,
+ 0x6c60, 0x527e, 0x6947, 0x662a, 0x6270, 0x7a3b, 0x752e, 0x7b2a,
+ 0x6c7b, 0x6c3f, 0x7c58, 0x5465, 0x7943, 0x6e62, 0x5769, 0x6d76,
+ 0x5e6d, 0x4c6c, 0x636e, 0x6854, 0x7a78, 0x5d34, 0x6435, 0x5830,
+ 0x5855, 0x746a, 0x4e39, 0x5661, 0x4f52, 0x5036, 0x4e22, 0x736e,
+ 0x7378, 0x5c4c, 0x504b, 0x7c24, 0x4d4a, 0x5754, 0x5e23, 0x6460,
+ 0x6e49, 0x625d, 0x757e, 0x542c, 0x5551, 0x5870, 0x7843, 0x6a57,
+ 0x7557, 0x583f, 0x7d40, 0x6b2d, 0x552a, 0x6728, 0x6e4a, 0x4a67,
+ 0x7863, 0x545d, 0x6a58, 0x7b59, 0x6d77, 0x6535, 0x502d, 0x7171,
+ 0x623d, 0x6348, 0x5955, 0x5f2a, 0x5b3c, 0x7864, 0x717a, 0x6536,
+ 0x736f, 0x7b5a, 0x6160, 0x592c, 0x756b, 0x6036, 0x6948, 0x4b4f,
+ 0x6349, 0x5e6e, 0x623e, 0x5c6f, 0x5625, 0x6271, 0x567e, 0x5921,
+ 0x5840, 0x5c5b, 0x6d3d, 0x5f38, 0x6a25, 0x572d, 0x7379, 0x6d78,
+ 0x7547, 0x614a, 0x6b63, 0x725e, 0x784c, 0x6a59, 0x5346, 0x5b66,
+ 0x752f, 0x4e70, 0x697e, 0x7b36, 0x6272, 0x4f72, 0x7739, 0x5973,
+ 0x614b, 0x5a5d, 0x5a39, 0x6b7b, 0x4b39, 0x6d79, 0x6060, 0x7440,
+ 0x7d3c, 0x5f31, 0x636f, 0x6023, 0x7d39, 0x7031, 0x4d4b, 0x6d3e,
+ 0x5540, 0x6370, 0x6d7a, 0x6964, 0x556d, 0x675d, 0x5476, 0x6537,
+ 0x5b67, 0x623f, 0x6e4b, 0x5774, 0x705d, 0x4e2b, 0x675e, 0x5656,
+ 0x614c, 0x6833, 0x656e, 0x5c22, 0x6050, 0x5535, 0x5521, 0x7b5b,
+ 0x794b, 0x4b73, 0x7425, 0x7a48, 0x5657, 0x6965, 0x7b5c, 0x7d50,
+ 0x7b76, 0x5a25, 0x5b3d, 0x6c62, 0x4d77, 0x705e, 0x7649, 0x5e6f,
+ 0x5331, 0x7c6e, 0x6843, 0x7148, 0x4e71, 0x796d, 0x7274, 0x6436,
+ 0x7539, 0x5c70, 0x6371, 0x6825, 0x723b, 0x5e24, 0x5a4c, 0x4a69,
+ 0x635a, 0x7c59, 0x6a5a, 0x7944, 0x6324, 0x7b5d, 0x6f4a, 0x6844,
+ 0x554c, 0x6b57, 0x592d, 0x7b2b, 0x5359, 0x5522, 0x765e, 0x5a76,
+ 0x6051, 0x6928, 0x7579, 0x7a2f, 0x6b7c, 0x606a, 0x6332, 0x5545,
+ 0x7163, 0x556e, 0x4d4c, 0x6d59, 0x5841, 0x7a6c, 0x716b, 0x7a3c,
+ 0x6662, 0x7a65, 0x627a, 0x4a36, 0x6437, 0x6a5b, 0x757a, 0x7b2c,
+ 0x4f43, 0x6b7d, 0x787a, 0x5f39, 0x6171, 0x5224, 0x757b, 0x505a,
+ 0x505b, 0x6a3e, 0x5931, 0x4a37, 0x5367, 0x7865, 0x5332, 0x6240,
+ 0x725f, 0x4d65, 0x792c, 0x4d4d, 0x6e2e, 0x562e, 0x576a, 0x6760,
+ 0x6b2e, 0x4f59, 0x5c4d, 0x6d7b, 0x5e70, 0x576b, 0x5e25, 0x5f57,
+ 0x5b50, 0x5b51, 0x5523, 0x7032, 0x5c5c, 0x4a68, 0x7866, 0x5c4e,
+ 0x6a5c, 0x5b52, 0x6933, 0x775b, 0x6328, 0x572e, 0x6061, 0x4b3a,
+ 0x6551, 0x505c, 0x5541, 0x584a, 0x6329, 0x6024, 0x6929, 0x5347,
+ 0x5c5d, 0x782e, 0x4c38, 0x502e, 0x5872, 0x634a, 0x4c2f, 0x542d,
+ 0x7651, 0x504c, 0x4a46, 0x5542, 0x4e3a, 0x4a47, 0x7a30, 0x5f58,
+ 0x753a, 0x656b, 0x6f74, 0x5d35, 0x4d2a, 0x6372, 0x7b77, 0x7750,
+ 0x7d3a, 0x7d61, 0x767e, 0x5140, 0x6845, 0x6438, 0x6168, 0x4c41,
+ 0x526d, 0x5b3e, 0x6062, 0x7a49, 0x614d, 0x4a38, 0x7260, 0x7149,
+ 0x5e71, 0x705f, 0x7844, 0x6e4c, 0x5e72, 0x6749, 0x6273, 0x6761,
+ 0x634b, 0x634c, 0x4f78, 0x6f2c, 0x7d7e, 0x7c25, 0x7a31, 0x5f59,
+ 0x6052, 0x745a, 0x714a, 0x4e23, 0x723c, 0x6c63, 0x6025, 0x772b,
+ 0x6b2f, 0x655e, 0x6124, 0x4d2b, 0x5974, 0x6826, 0x4d4e, 0x6169,
+ 0x7c6f, 0x6063, 0x6241, 0x4e24, 0x5e26, 0x6b7e, 0x6b5d, 0x7060,
+ 0x745b, 0x6274, 0x5348, 0x746b, 0x6e35, 0x7558, 0x555f, 0x5665,
+ 0x6b30, 0x7463, 0x634d, 0x7474, 0x7a32, 0x6f75, 0x4a5f, 0x6b31,
+ 0x6d3f, 0x7d49, 0x6426, 0x7924, 0x7033, 0x656c, 0x5167, 0x5947,
+ 0x6457, 0x6a5d, 0x5477, 0x5a3a, 0x5a4d, 0x794c, 0x615a, 0x5b3f,
+ 0x4c45, 0x6c50, 0x4b3b, 0x5e73, 0x692a, 0x5948, 0x6e63, 0x573d,
+ 0x4f44, 0x504d, 0x7c26, 0x717b, 0x7d52, 0x5141, 0x635b, 0x5349,
+ 0x5c4f, 0x4c6d, 0x5e27, 0x663b, 0x6c21, 0x4c39, 0x7b5e, 0x6762,
+ 0x5441, 0x5c28, 0x6242, 0x7358, 0x6553, 0x7359, 0x7346, 0x4d5b,
+ 0x4d2c, 0x7c43, 0x5467, 0x5142, 0x7925, 0x6855, 0x634e, 0x544a,
+ 0x5f5a, 0x7b5f, 0x6763, 0x787b, 0x634f, 0x7530, 0x5867, 0x5949,
+ 0x782f, 0x6f76, 0x5d36, 0x6e2f, 0x4d78, 0x5e38, 0x7c27, 0x777c,
+ 0x7731, 0x4e3b, 0x7421, 0x6e4d, 0x612e, 0x6c43, 0x4f7e, 0x783f,
+ 0x5862, 0x5368, 0x5e28, 0x7464, 0x6c42, 0x5975, 0x7945, 0x5d53,
+ 0x5671, 0x6c7c, 0x7c70, 0x6d40, 0x4a39, 0x6e64, 0x7261, 0x5e39,
+ 0x5672, 0x5e74, 0x5f5b, 0x5b53, 0x7a67, 0x5863, 0x7441, 0x5d37,
+ 0x7275, 0x542e, 0x5673, 0x5d38, 0x4f45, 0x5f5f, 0x723e, 0x7621,
+ 0x6b4b, 0x717c, 0x7347, 0x606b, 0x6d7c, 0x615b, 0x6e65, 0x5e75,
+ 0x7a53, 0x714b, 0x502f, 0x5d39, 0x5143, 0x7531, 0x6a46, 0x7061,
+ 0x762c, 0x7559, 0x706b, 0x5d3a, 0x723f, 0x7745, 0x5b22, 0x7276,
+ 0x4a3a, 0x7775, 0x4b65, 0x6e66, 0x6053, 0x4e25, 0x5658, 0x542f,
+ 0x6949, 0x534e, 0x7442, 0x4b66, 0x7121, 0x6b32, 0x7122, 0x6b33,
+ 0x7034, 0x4b74, 0x5430, 0x7332, 0x7b37, 0x756c, 0x6e67, 0x7432,
+ 0x756d, 0x4f73, 0x7062, 0x6e4e, 0x714c, 0x6538, 0x5775, 0x6373,
+ 0x4f65, 0x4f46, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x7a4d, 0x6663,
+ 0x7262, 0x756e, 0x4a3b, 0x635c, 0x4e72, 0x5659, 0x6e30, 0x7465,
+ 0x5842, 0x5c50, 0x4c6e, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f,
+ 0x5626, 0x5c3e, 0x5b54, 0x5747, 0x727e, 0x714d, 0x6243, 0x5c5e,
+ 0x5c5f, 0x6f2d, 0x662b, 0x795d, 0x6a3f, 0x6f2e, 0x7450, 0x4e73,
+ 0x662c, 0x4e5e, 0x5579, 0x6374, 0x4d50, 0x5538, 0x777d, 0x5c29,
+ 0x5e76, 0x5c2a, 0x7263, 0x6934, 0x525c, 0x6966, 0x6376, 0x674a,
+ 0x504e, 0x5a77, 0x4a3c, 0x6e68, 0x5a5e, 0x7277, 0x627b, 0x4c26,
+ 0x5a3b, 0x6e69, 0x755a, 0x775c, 0x616a, 0x4e41, 0x5431, 0x7d31,
+ 0x663d, 0x7b2d, 0x7867, 0x614e, 0x7762, 0x756f, 0x4f47, 0x5432,
+ 0x4c6f, 0x5468, 0x6e4f, 0x7757, 0x6026, 0x5641, 0x615c, 0x7063,
+ 0x7164, 0x5c71, 0x5627, 0x7475, 0x714e, 0x7264, 0x5030, 0x6c6f,
+ 0x793a, 0x6b35, 0x546d, 0x6244, 0x6967, 0x6b34, 0x6a21, 0x783c,
+ 0x4e26, 0x7946, 0x7c5a, 0x5433, 0x5339, 0x6a5e, 0x692b, 0x6161,
+ 0x534f, 0x7476, 0x6a40, 0x614f, 0x4c3a, 0x6e6a, 0x7064, 0x7334,
+ 0x546e, 0x7240, 0x7165, 0x7443, 0x6054, 0x6b36, 0x5721, 0x4b68,
+ 0x792d, 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x6c44, 0x5831,
+ 0x5c2b, 0x5524, 0x6b69, 0x683b, 0x5857, 0x7b2e, 0x5161, 0x5b40,
+ 0x753e, 0x5e77, 0x4a7b, 0x7746, 0x4f48, 0x6150, 0x6e50, 0x6974,
+ 0x4e74, 0x554d, 0x4f5b, 0x5d3b, 0x4e2c, 0x6968, 0x5434, 0x6447,
+ 0x755b, 0x7a41, 0x5e29, 0x5478, 0x6f77, 0x5333, 0x6b37, 0x6f78,
+ 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x7150, 0x7532, 0x592e, 0x552c,
+ 0x6246, 0x7d23, 0x7b65, 0x5f2b, 0x6275, 0x762d, 0x7533, 0x7035,
+ 0x6125, 0x755d, 0x6c22, 0x6d7d, 0x7534, 0x7b38, 0x5b23, 0x564a,
+ 0x4b59, 0x6554, 0x737a, 0x6b38, 0x6037, 0x576c, 0x716c, 0x652f,
+ 0x5561, 0x576d, 0x5151, 0x6172, 0x6f79, 0x5d3c, 0x765c, 0x7065,
+ 0x7444, 0x6969, 0x737b, 0x546f, 0x4c22, 0x777e, 0x5f3c, 0x6b4d,
+ 0x5037, 0x5642, 0x682d, 0x6f2f, 0x4b25, 0x4b69, 0x7a68, 0x4c46,
+ 0x6667, 0x6a47, 0x5b24, 0x4f49, 0x627c, 0x6f7a, 0x6b5e, 0x7548,
+ 0x545e, 0x6055, 0x6f30, 0x6247, 0x592f, 0x7967, 0x6765, 0x4f4a,
+ 0x6151, 0x6248, 0x6f7b, 0x7a79, 0x5c72, 0x6027, 0x7868, 0x4b6a,
+ 0x4b3c, 0x5662, 0x755e, 0x755f, 0x6e36, 0x6276, 0x534a, 0x6f7c,
+ 0x5144, 0x6f31, 0x5145, 0x505e, 0x5961, 0x6038, 0x4d51, 0x7339,
+ 0x674c, 0x5628, 0x4e27, 0x5435, 0x6448, 0x5334, 0x6b39, 0x4b75,
+ 0x765d, 0x7123, 0x4c47, 0x694a, 0x6170, 0x7560, 0x7b2f, 0x4b51,
+ 0x7b60, 0x7265, 0x6c70, 0x706c, 0x6e6b, 0x694b, 0x4c70, 0x572f,
+ 0x7321, 0x7c75, 0x7124, 0x6056, 0x6f32, 0x7451, 0x7721, 0x7151,
+ 0x4a7c, 0x4a7d, 0x4e4e, 0x7348, 0x733a, 0x6d7e, 0x5a26, 0x606c,
+ 0x784d, 0x4b52, 0x6b4e, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x4b26,
+ 0x4a48, 0x796e, 0x5b6c, 0x5031, 0x556f, 0x6673, 0x6722, 0x6459,
+ 0x6461, 0x7c44, 0x796f, 0x4f74, 0x7766, 0x4e3c, 0x7445, 0x5c23,
+ 0x5d3d, 0x7446, 0x7821, 0x6856, 0x5b41, 0x7066, 0x6439, 0x766d,
+ 0x792e, 0x5d3e, 0x5730, 0x5868, 0x4b3d, 0x795a, 0x784e, 0x7970,
+ 0x606d, 0x6333, 0x7433, 0x6a42, 0x7266, 0x7036, 0x5b56, 0x6b64,
+ 0x7267, 0x5755, 0x5436, 0x7968, 0x5741, 0x6555, 0x696a, 0x574c,
+ 0x5369, 0x6249, 0x7c5b, 0x4d2d, 0x4c30, 0x6a22, 0x6476, 0x5040,
+ 0x7037, 0x6e21, 0x5776, 0x624a, 0x624b, 0x7a4f, 0x6b5f, 0x564b,
+ 0x7434, 0x6d4d, 0x6452, 0x6a29, 0x643a, 0x7322, 0x4d52, 0x764b,
+ 0x7166, 0x6d41, 0x683c, 0x6e51, 0x7067, 0x624c, 0x642a, 0x7561,
+ 0x6d5a, 0x576e, 0x5171, 0x696b, 0x696c, 0x6064, 0x5a27, 0x5d54,
+ 0x6a23, 0x5643, 0x5674, 0x5a5f, 0x6f33, 0x624d, 0x6f7d, 0x7268,
+ 0x6f45, 0x6767, 0x577d, 0x674e, 0x5f5c, 0x7947, 0x5976, 0x5f2c,
+ 0x565a, 0x5c24, 0x7038, 0x557a, 0x6477, 0x5644, 0x746c, 0x6f7e,
+ 0x7021, 0x5e2a, 0x5a3c, 0x587c, 0x7a54, 0x6c65, 0x7c28, 0x6c66,
+ 0x584b, 0x7b39, 0x6453, 0x4d79, 0x4f53, 0x4a6a, 0x4f54, 0x783d,
+ 0x7447, 0x6a5f, 0x795b, 0x5437, 0x6b65, 0x6152, 0x6a24, 0x7a42,
+ 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x7a23, 0x6277, 0x624e, 0x6975,
+ 0x616b, 0x6768, 0x6857, 0x5a78, 0x544b, 0x7776, 0x5645, 0x5469,
+ 0x7a7a, 0x4c72, 0x775d, 0x5e3a, 0x4e28, 0x7039, 0x647e, 0x6449,
+ 0x6454, 0x6a43, 0x6f34, 0x573e, 0x7b62, 0x4d53, 0x6f35, 0x7a69,
+ 0x7926, 0x5f3d, 0x7747, 0x787d, 0x787c, 0x5e2b, 0x5b68, 0x635d,
+ 0x6162, 0x5146, 0x7650, 0x6b66, 0x5a79, 0x6c47, 0x5e78, 0x7869,
+ 0x635e, 0x4e75, 0x7a43, 0x6557, 0x6c48, 0x7349, 0x643b, 0x662e,
+ 0x6f36, 0x5c3f, 0x4e3d, 0x5843, 0x504f, 0x4f7a, 0x734a, 0x6057,
+ 0x5147, 0x692e, 0x683d, 0x7a44, 0x624f, 0x7a45, 0x7938, 0x5c60,
+ 0x7b30, 0x5829, 0x655f, 0x7927, 0x766e, 0x764c, 0x6278, 0x6c71,
+ 0x5a60, 0x7152, 0x524c, 0x4f4b, 0x4a3d, 0x5d3f, 0x766f, 0x5e79,
+ 0x7a34, 0x552d, 0x7167, 0x5e3e, 0x5c40, 0x5148, 0x5149, 0x783e,
+ 0x4b76, 0x5479, 0x7562, 0x6153, 0x5869, 0x787e, 0x4f4c, 0x7d24,
+ 0x4e76, 0x7a50, 0x4c73, 0x663e, 0x762e, 0x5570, 0x514a, 0x7c3e,
+ 0x5571, 0x4d69, 0x7a35, 0x6250, 0x7477, 0x4d54, 0x6723, 0x5b25,
+ 0x6251, 0x5722, 0x7763, 0x6a26, 0x5021, 0x4e5a, 0x7b6b, 0x5b26,
+ 0x5b5e, 0x5865, 0x6a60, 0x582a, 0x6560, 0x565b, 0x6f46, 0x786a,
+ 0x6455, 0x4e77, 0x6058, 0x576f, 0x746d, 0x4d66, 0x4c74, 0x7563,
+ 0x644a, 0x5c61, 0x7948, 0x7c3f, 0x6827, 0x5844, 0x4b3e, 0x5c2e,
+ 0x5777, 0x7068, 0x5d40, 0x4f4d, 0x5c73, 0x5930, 0x6669, 0x643c,
+ 0x6a44, 0x646c, 0x6465, 0x7b78, 0x4c3b, 0x643d, 0x4d5c, 0x5977,
+ 0x5d5f, 0x6d4e, 0x5950, 0x6523, 0x794d, 0x4d2e, 0x4f4e, 0x762f,
+ 0x7d53, 0x6b6d, 0x565c, 0x6524, 0x5536, 0x565d, 0x7969, 0x6724,
+ 0x5663, 0x514b, 0x5664, 0x5572, 0x5e7a, 0x5778, 0x586a, 0x4f55,
+ 0x587d, 0x582b, 0x7d4b, 0x7c5c, 0x6028, 0x5573, 0x7d59, 0x4c23,
+ 0x5979, 0x536a, 0x7575, 0x6f47, 0x535a, 0x5a3d, 0x6828, 0x5c2f,
+ 0x7023, 0x4d55, 0x6029, 0x5e2c, 0x703a, 0x6e31, 0x6e32, 0x764d,
+ 0x6e52, 0x5646, 0x6065, 0x733b, 0x6561, 0x644b, 0x5723, 0x5b42,
+ 0x4a7e, 0x4f4f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
+ 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
+ 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
+ 0x303f, 0x3040, 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,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
+ 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, 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, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a,
+ 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 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, 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, 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,
+ 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, 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, 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, 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,
+ 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, 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, 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, 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,
+ 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, 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, 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, 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,
+ 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, 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, 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, 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,
+ 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, 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, 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, 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,
+ 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022,
+ 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c,
+ 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165,
+ 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170,
+ 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223,
+ 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e,
+ 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
+ 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253,
+ 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f,
+ 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269,
+ 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275,
+ 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638,
+ 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55,
+ 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d,
+ 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539,
+ 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a,
+ 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f,
+ 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646,
+ 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661,
+ 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f,
+ 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726,
+ 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746,
+ 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764,
+ 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879,
+ 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65,
+ 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a,
+ 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c,
+ 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a,
+ 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40,
+ 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e,
+ 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21,
+ 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427,
+ 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870,
+ 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324,
+ 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 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, 0x212c,
+ 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, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c,
+};
+
+static const Summary16 ksc5601_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x2592 }, { 6, 0xf7df },
+ { 20, 0x0040 }, { 21, 0xc181 }, { 26, 0x0040 }, { 27, 0x4181 },
+ /* 0x0100 */
+ { 31, 0x0000 }, { 31, 0x0002 }, { 32, 0x00c0 }, { 34, 0x810e },
+ { 39, 0x0e07 }, { 45, 0x000c }, { 47, 0x00c0 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ /* 0x0200 */
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0080 }, { 50, 0x2f01 }, { 56, 0x0000 }, { 56, 0x0000 },
+ /* 0x0300 */
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0xfffe }, { 71, 0x03fb }, { 80, 0xfffe },
+ { 95, 0x03fb }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0000 },
+ /* 0x0400 */
+ { 104, 0x0002 }, { 105, 0xffff }, { 121, 0xffff }, { 137, 0xffff },
+ { 153, 0xffff }, { 169, 0x0002 },
+};
+static const Summary16 ksc5601_uni2indx_page20[103] = {
+ /* 0x2000 */
+ { 170, 0x0000 }, { 170, 0x3320 }, { 175, 0x0063 }, { 179, 0x080d },
+ { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x8010 },
+ { 185, 0x001e }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
+ { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
+ /* 0x2100 */
+ { 189, 0x0208 }, { 191, 0x0048 }, { 193, 0x0846 }, { 197, 0x0000 },
+ { 197, 0x0000 }, { 197, 0x7818 }, { 203, 0x03ff }, { 213, 0x03ff },
+ { 223, 0x0000 }, { 223, 0x03ff }, { 233, 0x0000 }, { 233, 0x0000 },
+ { 233, 0x0000 }, { 233, 0x0014 }, { 235, 0x0000 }, { 235, 0x0000 },
+ /* 0x2200 */
+ { 235, 0x898d }, { 242, 0x6402 }, { 246, 0x5fa1 }, { 255, 0x3030 },
+ { 259, 0x0000 }, { 259, 0x0004 }, { 260, 0x0c33 }, { 266, 0x0000 },
+ { 266, 0x00cc }, { 270, 0x0200 }, { 271, 0x0020 }, { 272, 0x0000 },
+ { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 },
+ /* 0x2300 */
+ { 272, 0x0000 }, { 272, 0x0004 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ /* 0x2400 */
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x7fff }, { 288, 0xfff0 },
+ { 300, 0x0007 }, { 303, 0xf000 }, { 307, 0xffff }, { 323, 0x003f },
+ { 329, 0x0000 }, { 329, 0xffff }, { 345, 0x03ff }, { 355, 0x0000 },
+ /* 0x2500 */
+ { 355, 0xf00f }, { 363, 0xffff }, { 379, 0xffff }, { 395, 0xffff },
+ { 411, 0x0fff }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 },
+ { 423, 0x0000 }, { 423, 0x0004 }, { 424, 0x03fb }, { 433, 0x30cc },
+ { 439, 0xc9c3 }, { 447, 0x0003 }, { 449, 0x0000 }, { 449, 0x0000 },
+ /* 0x2600 */
+ { 449, 0xc060 }, { 453, 0x5000 }, { 455, 0x0000 }, { 455, 0x0000 },
+ { 455, 0x0005 }, { 457, 0x0000 }, { 457, 0x37bb },
+};
+static const Summary16 ksc5601_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 468, 0xff0f }, { 480, 0x003b }, { 485, 0x0000 }, { 485, 0x0000 },
+ { 485, 0xfffe }, { 500, 0xffff }, { 516, 0xffff }, { 532, 0xffff },
+ { 548, 0xffff }, { 564, 0x000f }, { 568, 0xfffe }, { 583, 0xffff },
+ { 599, 0xffff }, { 615, 0xffff }, { 631, 0xffff }, { 647, 0x007f },
+ /* 0x3100 */
+ { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0xfffe },
+ { 669, 0xffff }, { 685, 0xffff }, { 701, 0xffff }, { 717, 0xffff },
+ { 733, 0x7fff }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
+ { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
+ /* 0x3200 */
+ { 748, 0xffff }, { 764, 0x1fff }, { 777, 0x0000 }, { 777, 0x0000 },
+ { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0xffff }, { 793, 0x8fff },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ /* 0x3300 */
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0xff1f }, { 819, 0xffff }, { 835, 0xffff }, { 851, 0xffff },
+ { 867, 0x87ff }, { 879, 0x3949 },
+};
+static const Summary16 ksc5601_uni2indx_page4e[1306] = {
+ /* 0x4e00 */
+ { 886, 0x2f8b }, { 895, 0x4372 }, { 902, 0x2000 }, { 903, 0x0b04 },
+ { 907, 0xe82c }, { 914, 0xe340 }, { 920, 0x2800 }, { 922, 0x40c8 },
+ { 926, 0x5944 }, { 932, 0x4937 }, { 940, 0x7976 }, { 950, 0x0440 },
+ { 952, 0x2c93 }, { 959, 0xa3f0 }, { 967, 0x0038 }, { 970, 0x08c5 },
+ /* 0x4f00 */
+ { 975, 0xee02 }, { 982, 0x0003 }, { 984, 0x8000 }, { 985, 0x3550 },
+ { 991, 0xe1c8 }, { 998, 0x1e23 }, { 1005, 0x8200 }, { 1007, 0xc449 },
+ { 1013, 0xad5a }, { 1022, 0x2942 }, { 1027, 0xc000 }, { 1029, 0x8060 },
+ { 1032, 0x461c }, { 1038, 0xa49a }, { 1045, 0xc003 }, { 1049, 0x052a },
+ /* 0x5000 */
+ { 1054, 0x2a44 }, { 1059, 0xd646 }, { 1067, 0x3dda }, { 1077, 0x0800 },
+ { 1078, 0x8388 }, { 1083, 0x1420 }, { 1086, 0x0020 }, { 1087, 0x0170 },
+ { 1091, 0x2021 }, { 1094, 0x0302 }, { 1097, 0x3000 }, { 1099, 0x40ac },
+ { 1104, 0x8620 }, { 1108, 0x4462 }, { 1113, 0x20a0 }, { 1116, 0x8a00 },
+ /* 0x5100 */
+ { 1119, 0x0253 }, { 1124, 0x8004 }, { 1126, 0x0402 }, { 1128, 0x1484 },
+ { 1132, 0x7bfb }, { 1145, 0x1004 }, { 1147, 0x7fa4 }, { 1157, 0x11e2 },
+ { 1163, 0x2441 }, { 1167, 0x00a4 }, { 1170, 0x1421 }, { 1174, 0x20c0 },
+ { 1177, 0x3a50 }, { 1183, 0x7000 }, { 1186, 0x0002 }, { 1187, 0x2743 },
+ /* 0x5200 */
+ { 1194, 0x45c9 }, { 1201, 0x2082 }, { 1204, 0x4630 }, { 1209, 0x0fc1 },
+ { 1216, 0x3c88 }, { 1222, 0x2850 }, { 1226, 0x8602 }, { 1230, 0xa024 },
+ { 1234, 0x2388 }, { 1239, 0x8806 }, { 1243, 0x0e19 }, { 1249, 0x4000 },
+ { 1250, 0x22aa }, { 1256, 0xeb64 }, { 1265, 0x001c }, { 1268, 0xcd28 },
+ /* 0x5300 */
+ { 1275, 0xa120 }, { 1279, 0x02e1 }, { 1284, 0x840b }, { 1289, 0x8200 },
+ { 1291, 0x279b }, { 1300, 0x549e }, { 1308, 0x8141 }, { 1312, 0xa0b3 },
+ { 1319, 0x0010 }, { 1320, 0x8508 }, { 1324, 0x2061 }, { 1328, 0x0800 },
+ { 1329, 0x2f08 }, { 1335, 0x08d0 }, { 1339, 0xbe3e }, { 1350, 0x010f },
+ /* 0x5400 */
+ { 1355, 0xf718 }, { 1364, 0xa803 }, { 1369, 0x0a41 }, { 1373, 0x5b08 },
+ { 1379, 0x0504 }, { 1382, 0x0002 }, { 1383, 0x0500 }, { 1385, 0x382a },
+ { 1391, 0x5041 }, { 1395, 0x0001 }, { 1396, 0x1910 }, { 1400, 0x2108 },
+ { 1403, 0x0313 }, { 1408, 0x0000 }, { 1408, 0x6122 }, { 1413, 0x0404 },
+ /* 0x5500 */
+ { 1415, 0x40d0 }, { 1419, 0x1001 }, { 1421, 0x8000 }, { 1422, 0x4022 },
+ { 1425, 0x8050 }, { 1428, 0x4048 }, { 1431, 0x0008 }, { 1432, 0x1000 },
+ { 1433, 0x06d1 }, { 1439, 0x3700 }, { 1444, 0x5e80 }, { 1450, 0x0000 },
+ { 1450, 0x00a0 }, { 1452, 0x9410 }, { 1456, 0x0018 }, { 1458, 0x6000 },
+ /* 0x5600 */
+ { 1460, 0x0240 }, { 1462, 0x0090 }, { 1464, 0x8000 }, { 1465, 0x0054 },
+ { 1468, 0x0000 }, { 1468, 0x0008 }, { 1469, 0x0900 }, { 1471, 0x0010 },
+ { 1472, 0x0040 }, { 1473, 0x0000 }, { 1473, 0x5020 }, { 1476, 0x1010 },
+ { 1478, 0x2400 }, { 1480, 0x4c02 }, { 1484, 0x0001 }, { 1485, 0x0601 },
+ /* 0x5700 */
+ { 1488, 0x2918 }, { 1493, 0x814c }, { 1498, 0x2100 }, { 1500, 0x0801 },
+ { 1502, 0x6485 }, { 1508, 0x0003 }, { 1510, 0x4452 }, { 1515, 0x1021 },
+ { 1518, 0x0904 }, { 1521, 0x0008 }, { 1522, 0x000d }, { 1525, 0x0000 },
+ { 1525, 0x4988 }, { 1530, 0x8000 }, { 1531, 0x0001 }, { 1532, 0x1691 },
+ /* 0x5800 */
+ { 1538, 0x0765 }, { 1545, 0x4000 }, { 1546, 0x8492 }, { 1551, 0x0433 },
+ { 1556, 0x8c00 }, { 1559, 0x4592 }, { 1565, 0x0016 }, { 1568, 0x5220 },
+ { 1572, 0x0228 }, { 1575, 0xd008 }, { 1579, 0x4300 }, { 1582, 0x4c08 },
+ { 1586, 0x40a2 }, { 1590, 0xc32a }, { 1597, 0x9810 }, { 1601, 0x2e00 },
+ /* 0x5900 */
+ { 1605, 0x8000 }, { 1606, 0x1670 }, { 1612, 0x6e84 }, { 1619, 0x4082 },
+ { 1622, 0xc390 }, { 1628, 0x04b3 }, { 1634, 0x7c85 }, { 1642, 0x2118 },
+ { 1646, 0x041c }, { 1650, 0x02c8 }, { 1654, 0x1120 }, { 1657, 0x4a00 },
+ { 1660, 0x0a48 }, { 1664, 0x361b }, { 1672, 0x5540 }, { 1677, 0x8900 },
+ /* 0x5a00 */
+ { 1680, 0x000a }, { 1682, 0x9902 }, { 1687, 0x0221 }, { 1690, 0x1040 },
+ { 1692, 0x0242 }, { 1695, 0x0400 }, { 1696, 0x0044 }, { 1698, 0x0000 },
+ { 1698, 0x0000 }, { 1698, 0x0c04 }, { 1701, 0x0010 }, { 1702, 0x0000 },
+ { 1702, 0x1216 }, { 1707, 0x0000 }, { 1707, 0x0242 }, { 1710, 0x0000 },
+ /* 0x5b00 */
+ { 1710, 0x1a20 }, { 1714, 0x0040 }, { 1715, 0x0400 }, { 1716, 0x0000 },
+ { 1716, 0x0009 }, { 1718, 0xb5b3 }, { 1728, 0x0a18 }, { 1732, 0x1523 },
+ { 1738, 0x9ba0 }, { 1745, 0x1fe8 }, { 1754, 0x507c }, { 1761, 0x8379 },
+ { 1769, 0x10fd }, { 1777, 0xc09d }, { 1784, 0xdbf6 }, { 1796, 0x0560 },
+ /* 0x5c00 */
+ { 1800, 0xef92 }, { 1810, 0x0242 }, { 1813, 0x0110 }, { 1815, 0xdf02 },
+ { 1823, 0x6961 }, { 1830, 0x0822 }, { 1833, 0x9035 }, { 1839, 0x0202 },
+ { 1841, 0x0000 }, { 1841, 0x0003 }, { 1843, 0x1a02 }, { 1847, 0x45aa },
+ { 1854, 0x0001 }, { 1855, 0x0200 }, { 1856, 0x8101 }, { 1859, 0x2851 },
+ /* 0x5d00 */
+ { 1864, 0x6080 }, { 1867, 0x02d2 }, { 1872, 0x0280 }, { 1874, 0x0000 },
+ { 1874, 0x1800 }, { 1876, 0x0001 }, { 1877, 0x9200 }, { 1880, 0x0000 },
+ { 1880, 0x0880 }, { 1882, 0x2000 }, { 1883, 0x0405 }, { 1886, 0x3500 },
+ { 1890, 0x2000 }, { 1891, 0x6044 }, { 1895, 0x49e6 }, { 1903, 0x609e },
+ /* 0x5e00 */
+ { 1910, 0x104c }, { 1914, 0x2a42 }, { 1919, 0x2820 }, { 1922, 0xa148 },
+ { 1927, 0x10b1 }, { 1932, 0x8020 }, { 1934, 0x000e }, { 1937, 0x7b9c },
+ { 1947, 0x8490 }, { 1951, 0x14a0 }, { 1955, 0x28c1 }, { 1960, 0x41e0 },
+ { 1965, 0x0704 }, { 1969, 0x8c49 }, { 1975, 0x100d }, { 1979, 0x0cc8 },
+ /* 0x5f00 */
+ { 1984, 0x8412 }, { 1988, 0x89ba }, { 1996, 0x02c0 }, { 1999, 0x1422 },
+ { 2003, 0x5500 }, { 2007, 0x0ac0 }, { 2011, 0x3ec4 }, { 2019, 0x9283 },
+ { 2025, 0x1ca3 }, { 2032, 0x4387 }, { 2039, 0x4703 }, { 2045, 0x22a0 },
+ { 2049, 0x3028 }, { 2053, 0x03c0 }, { 2057, 0x0801 }, { 2059, 0xa020 },
+ /* 0x6000 */
+ { 2062, 0x8000 }, { 2063, 0x3044 }, { 2067, 0x85a3 }, { 2074, 0x0000 },
+ { 2074, 0x200e }, { 2078, 0x2225 }, { 2083, 0xb73c }, { 2093, 0x0001 },
+ { 2094, 0x3220 }, { 2098, 0x8c50 }, { 2103, 0x0099 }, { 2107, 0x315d },
+ { 2115, 0x00a0 }, { 2117, 0x9402 }, { 2121, 0x0003 }, { 2123, 0x0e4b },
+ /* 0x6100 */
+ { 2130, 0xe342 }, { 2137, 0x8c20 }, { 2141, 0x0080 }, { 2142, 0xd091 },
+ { 2148, 0x1d94 }, { 2155, 0xa328 }, { 2161, 0x499c }, { 2168, 0x60c1 },
+ { 2173, 0x4406 }, { 2177, 0x0713 }, { 2183, 0x5a90 }, { 2189, 0x4444 },
+ { 2193, 0x0f88 }, { 2199, 0x0000 }, { 2199, 0x0040 }, { 2200, 0x95c4 },
+ /* 0x6200 */
+ { 2207, 0x7581 }, { 2214, 0x8447 }, { 2220, 0x4402 }, { 2223, 0xc053 },
+ { 2229, 0x2b83 }, { 2236, 0x0108 }, { 2238, 0x4000 }, { 2239, 0x9242 },
+ { 2244, 0x0611 }, { 2248, 0x09a6 }, { 2254, 0x0800 }, { 2255, 0x3222 },
+ { 2260, 0xb384 }, { 2267, 0x1bdd }, { 2277, 0xf000 }, { 2281, 0xc08a },
+ /* 0x6300 */
+ { 2286, 0x0282 }, { 2289, 0x0002 }, { 2290, 0x8800 }, { 2292, 0x6c00 },
+ { 2296, 0x9200 }, { 2299, 0x0021 }, { 2301, 0x4180 }, { 2304, 0x8c84 },
+ { 2309, 0x1308 }, { 2313, 0x0944 }, { 2317, 0x07a7 }, { 2325, 0x0000 },
+ { 2325, 0x8051 }, { 2329, 0x0c41 }, { 2333, 0x6002 }, { 2336, 0x00d0 },
+ /* 0x6400 */
+ { 2339, 0xa000 }, { 2341, 0x10d0 }, { 2345, 0x3004 }, { 2348, 0x4400 },
+ { 2350, 0x0000 }, { 2350, 0x0100 }, { 2351, 0x8201 }, { 2354, 0x0700 },
+ { 2357, 0x0100 }, { 2358, 0x440e }, { 2363, 0x6830 }, { 2368, 0x0805 },
+ { 2371, 0x64b2 }, { 2378, 0x0514 }, { 2382, 0x10e6 }, { 2388, 0x4414 },
+ /* 0x6500 */
+ { 2392, 0x0011 }, { 2394, 0x2100 }, { 2396, 0x9c08 }, { 2401, 0xcbc0 },
+ { 2408, 0xe120 }, { 2413, 0x40c2 }, { 2417, 0x304c }, { 2422, 0x41b4 },
+ { 2428, 0x10ac }, { 2433, 0x9a83 }, { 2440, 0x98b2 }, { 2447, 0x3281 },
+ { 2452, 0x9822 }, { 2457, 0x0084 }, { 2459, 0x3369 }, { 2467, 0xbc12 },
+ /* 0x6600 */
+ { 2474, 0xd6c0 }, { 2481, 0xc03b }, { 2488, 0xa1a1 }, { 2494, 0x0c53 },
+ { 2500, 0x8a1e }, { 2507, 0xea00 }, { 2512, 0xcbf0 }, { 2521, 0x05d8 },
+ { 2527, 0x4390 }, { 2532, 0x21c3 }, { 2538, 0x4805 }, { 2542, 0x4a1c },
+ { 2548, 0x02d0 }, { 2552, 0x3240 }, { 2556, 0x0041 }, { 2558, 0xd79d },
+ /* 0x6700 */
+ { 2569, 0x2b09 }, { 2575, 0xe8b0 }, { 2582, 0x7dc0 }, { 2590, 0x2452 },
+ { 2595, 0xc240 }, { 2599, 0xd04b }, { 2606, 0xa000 }, { 2608, 0xc8ab },
+ { 2616, 0x8a80 }, { 2620, 0x34a9 }, { 2627, 0x8000 }, { 2628, 0x41c9 },
+ { 2634, 0x8010 }, { 2636, 0x241f }, { 2643, 0x9200 }, { 2646, 0x487b },
+ /* 0x6800 */
+ { 2654, 0x0000 }, { 2654, 0x00cc }, { 2658, 0x8406 }, { 2662, 0x3300 },
+ { 2666, 0x410f }, { 2672, 0x001b }, { 2676, 0x2000 }, { 2677, 0x8040 },
+ { 2679, 0x8022 }, { 2682, 0xa098 }, { 2687, 0xa186 }, { 2693, 0x006b },
+ { 2698, 0x2a30 }, { 2703, 0x85a4 }, { 2709, 0x4181 }, { 2713, 0x0604 },
+ /* 0x6900 */
+ { 2716, 0x6021 }, { 2720, 0x0004 }, { 2721, 0x0080 }, { 2722, 0xa001 },
+ { 2725, 0x0400 }, { 2726, 0x46b8 }, { 2733, 0xe90f }, { 2742, 0x03a0 },
+ { 2746, 0x0000 }, { 2746, 0x1820 }, { 2749, 0x40a0 }, { 2752, 0x0810 },
+ { 2754, 0x380a }, { 2759, 0x0001 }, { 2760, 0x0500 }, { 2762, 0xa800 },
+ /* 0x6a00 */
+ { 2765, 0x0404 }, { 2767, 0xc28a }, { 2773, 0x000a }, { 2775, 0x2720 },
+ { 2780, 0x0910 }, { 2783, 0x830c }, { 2788, 0x0802 }, { 2790, 0x0000 },
+ { 2790, 0x6211 }, { 2795, 0x1080 }, { 2797, 0x000c }, { 2799, 0x0808 },
+ { 2801, 0x000c }, { 2803, 0x0c08 }, { 2806, 0x0000 }, { 2806, 0x0840 },
+ /* 0x6b00 */
+ { 2808, 0x1410 }, { 2811, 0x0044 }, { 2813, 0x000b }, { 2816, 0x6404 },
+ { 2820, 0x50c0 }, { 2824, 0x8001 }, { 2826, 0x047e }, { 2833, 0x8984 },
+ { 2838, 0x0658 }, { 2843, 0x4140 }, { 2846, 0xc000 }, { 2848, 0x94a4 },
+ { 2854, 0xa862 }, { 2860, 0x09dc }, { 2867, 0x1800 }, { 2869, 0x0000 },
+ /* 0x6c00 */
+ { 2869, 0x8100 }, { 2871, 0x000a }, { 2873, 0x0008 }, { 2874, 0x4190 },
+ { 2878, 0x4007 }, { 2882, 0xe4a1 }, { 2889, 0x2501 }, { 2893, 0x6445 },
+ { 2899, 0x11ee }, { 2907, 0x0e7d }, { 2916, 0x4800 }, { 2918, 0xfb08 },
+ { 2926, 0x1616 }, { 2932, 0x08a8 }, { 2936, 0xc92e }, { 2944, 0x0009 },
+ /* 0x6d00 */
+ { 2946, 0x1800 }, { 2948, 0x4a82 }, { 2953, 0x06a0 }, { 2957, 0x6b64 },
+ { 2965, 0x0002 }, { 2966, 0x1600 }, { 2969, 0x5648 }, { 2975, 0x8390 },
+ { 2980, 0x73a0 }, { 2987, 0x002a }, { 2990, 0x8000 }, { 2991, 0x0024 },
+ { 2993, 0x88f9 }, { 3001, 0x4702 }, { 3006, 0x4d02 }, { 3011, 0x0faa },
+ /* 0x6e00 */
+ { 3019, 0x0000 }, { 3019, 0x8e80 }, { 3024, 0xb87b }, { 3034, 0x7554 },
+ { 3042, 0x2418 }, { 3046, 0xd940 }, { 3052, 0xc880 }, { 3056, 0x040c },
+ { 3059, 0x0000 }, { 3059, 0xb041 }, { 3064, 0x8c24 }, { 3069, 0x0442 },
+ { 3072, 0x5a34 }, { 3079, 0x001a }, { 3082, 0x8000 }, { 3083, 0xc110 },
+ /* 0x6f00 */
+ { 3087, 0x8046 }, { 3091, 0x0032 }, { 3094, 0x180d }, { 3099, 0x8106 },
+ { 3103, 0x0002 }, { 3104, 0xcd92 }, { 3112, 0x6014 }, { 3116, 0x7401 },
+ { 3121, 0x6112 }, { 3126, 0x0091 }, { 3129, 0xc098 }, { 3134, 0x420a },
+ { 3138, 0x040f }, { 3143, 0x8420 }, { 3146, 0x9a13 }, { 3153, 0x4002 },
+ /* 0x7000 */
+ { 3155, 0x8a62 }, { 3161, 0xfd22 }, { 3170, 0x8188 }, { 3174, 0x4080 },
+ { 3176, 0x1000 }, { 3177, 0x2103 }, { 3181, 0x0808 }, { 3183, 0x3101 },
+ { 3187, 0x4420 }, { 3190, 0x0704 }, { 3194, 0xb812 }, { 3200, 0x0388 },
+ { 3204, 0x8900 }, { 3207, 0xa300 }, { 3211, 0x0000 }, { 3211, 0x2202 },
+ /* 0x7100 */
+ { 3214, 0x1210 }, { 3217, 0x4600 }, { 3220, 0x0042 }, { 3222, 0x0041 },
+ { 3224, 0x5680 }, { 3229, 0x5241 }, { 3234, 0x52f0 }, { 3241, 0x2000 },
+ { 3242, 0x8610 }, { 3246, 0x8214 }, { 3250, 0x1004 }, { 3252, 0x4602 },
+ { 3256, 0x430a }, { 3261, 0x8035 }, { 3266, 0x60e0 }, { 3271, 0xd800 },
+ /* 0x7200 */
+ { 3275, 0x0041 }, { 3277, 0x0801 }, { 3279, 0x3400 }, { 3282, 0x6c65 },
+ { 3290, 0x11c1 }, { 3295, 0xab04 }, { 3301, 0x0286 }, { 3305, 0x2204 },
+ { 3308, 0x0003 }, { 3310, 0x0000 }, { 3310, 0x9084 }, { 3314, 0x0000 },
+ { 3314, 0x4015 }, { 3318, 0x0281 }, { 3321, 0x0202 }, { 3323, 0x3300 },
+ /* 0x7300 */
+ { 3327, 0x0400 }, { 3328, 0x3840 }, { 3332, 0x0e20 }, { 3336, 0xc0c0 },
+ { 3340, 0x0030 }, { 3342, 0x0085 }, { 3345, 0x0500 }, { 3347, 0x0d25 },
+ { 3353, 0x4ad0 }, { 3359, 0x81d0 }, { 3364, 0x2280 }, { 3367, 0x020c },
+ { 3370, 0xb605 }, { 3377, 0x6240 }, { 3381, 0x2679 }, { 3389, 0x6280 },
+ /* 0x7400 */
+ { 3393, 0x02ea }, { 3399, 0x0808 }, { 3401, 0xdd67 }, { 3412, 0x8579 },
+ { 3420, 0x081b }, { 3425, 0xdea0 }, { 3433, 0x8735 }, { 3441, 0x4000 },
+ { 3442, 0x0a8c }, { 3447, 0xd100 }, { 3451, 0x05aa }, { 3457, 0xa225 },
+ { 3463, 0x8440 }, { 3466, 0x1510 }, { 3470, 0x404d }, { 3475, 0x0080 },
+ /* 0x7500 */
+ { 3476, 0x0012 }, { 3478, 0x8d22 }, { 3484, 0x1968 }, { 3490, 0x058f },
+ { 3497, 0x9080 }, { 3500, 0x3a1a }, { 3507, 0x8464 }, { 3512, 0x8561 },
+ { 3518, 0xccc0 }, { 3524, 0x2002 }, { 3526, 0x0820 }, { 3528, 0x732e },
+ { 3537, 0x20a4 }, { 3541, 0x0b34 }, { 3547, 0x0004 }, { 3548, 0x1415 },
+ /* 0x7600 */
+ { 3553, 0x2001 }, { 3555, 0x8200 }, { 3557, 0x0057 }, { 3562, 0x0800 },
+ { 3563, 0x5004 }, { 3566, 0x0044 }, { 3568, 0x1212 }, { 3572, 0x7905 },
+ { 3579, 0x40d0 }, { 3583, 0x0009 }, { 3585, 0x4000 }, { 3586, 0x8400 },
+ { 3588, 0x054c }, { 3593, 0xd844 }, { 3599, 0x409a }, { 3604, 0x5114 },
+ /* 0x7700 */
+ { 3609, 0x0b12 }, { 3614, 0x4000 }, { 3615, 0x0201 }, { 3617, 0x1580 },
+ { 3621, 0x2001 }, { 3623, 0x0800 }, { 3624, 0x084a }, { 3628, 0xc200 },
+ { 3631, 0x0800 }, { 3632, 0x4002 }, { 3634, 0x3020 }, { 3637, 0x9809 },
+ { 3642, 0x0000 }, { 3642, 0x1880 }, { 3645, 0xe22c }, { 3652, 0x0008 },
+ /* 0x7800 */
+ { 3653, 0x0004 }, { 3654, 0x0004 }, { 3655, 0x10e0 }, { 3659, 0x0014 },
+ { 3661, 0x8020 }, { 3663, 0x2000 }, { 3664, 0x9800 }, { 3667, 0x1000 },
+ { 3668, 0x7082 }, { 3673, 0x0082 }, { 3675, 0x0288 }, { 3678, 0x1c00 },
+ { 3681, 0x4c22 }, { 3686, 0x0001 }, { 3687, 0x9100 }, { 3690, 0x0820 },
+ /* 0x7900 */
+ { 3692, 0x4002 }, { 3694, 0x0040 }, { 3695, 0x1c00 }, { 3698, 0x4400 },
+ { 3700, 0x0383 }, { 3705, 0x7cc1 }, { 3713, 0x2121 }, { 3717, 0x8400 },
+ { 3719, 0xe002 }, { 3723, 0x0002 }, { 3724, 0x44c0 }, { 3728, 0xe20a },
+ { 3734, 0x0e03 }, { 3739, 0x8126 }, { 3744, 0x02d0 }, { 3748, 0x0800 },
+ /* 0x7a00 */
+ { 3749, 0x2921 }, { 3754, 0x9690 }, { 3760, 0x4001 }, { 3762, 0xb8c2 },
+ { 3769, 0x6241 }, { 3774, 0x0080 }, { 3775, 0x0a06 }, { 3779, 0xa651 },
+ { 3786, 0x0112 }, { 3789, 0x812c }, { 3794, 0xc600 }, { 3798, 0x0400 },
+ { 3799, 0x0cb0 }, { 3804, 0xa280 }, { 3808, 0xa429 }, { 3814, 0x8640 },
+ /* 0x7b00 */
+ { 3818, 0x8000 }, { 3819, 0x4a02 }, { 3823, 0x3041 }, { 3827, 0x0200 },
+ { 3828, 0xba40 }, { 3834, 0x0057 }, { 3839, 0x5001 }, { 3842, 0x2020 },
+ { 3844, 0x8880 }, { 3847, 0x24b0 }, { 3852, 0x2002 }, { 3854, 0x0112 },
+ { 3857, 0x02d3 }, { 3863, 0x0004 }, { 3864, 0x0211 }, { 3867, 0x0000 },
+ /* 0x7c00 */
+ { 3867, 0x0080 }, { 3868, 0x4004 }, { 3870, 0x0c82 }, { 3874, 0xe000 },
+ { 3877, 0x3008 }, { 3880, 0x0000 }, { 3880, 0x1011 }, { 3883, 0x0008 },
+ { 3884, 0x0208 }, { 3886, 0x81a4 }, { 3891, 0x40a0 }, { 3894, 0x420e },
+ { 3899, 0x0400 }, { 3900, 0xc040 }, { 3903, 0x0081 }, { 3905, 0x4800 },
+ /* 0x7d00 */
+ { 3907, 0x2df5 }, { 3917, 0x0f91 }, { 3924, 0xd807 }, { 3931, 0x0629 },
+ { 3936, 0x007c }, { 3941, 0x4001 }, { 3943, 0x4546 }, { 3949, 0x824e },
+ { 3955, 0xc000 }, { 3957, 0x1008 }, { 3959, 0x3005 }, { 3963, 0xed36 },
+ { 3973, 0x0c80 }, { 3976, 0x6540 }, { 3981, 0x930b }, { 3988, 0x0810 },
+ /* 0x7e00 */
+ { 3990, 0x0600 }, { 3992, 0xe820 }, { 3997, 0xc80a }, { 4002, 0x6082 },
+ { 4006, 0x00ca }, { 4010, 0x4034 }, { 4014, 0x2e02 }, { 4019, 0x1201 },
+ { 4022, 0x9004 }, { 4025, 0x1948 }, { 4030, 0x0000 }, { 4030, 0x0000 },
+ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 },
+ /* 0x7f00 */
+ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0540 },
+ { 4033, 0x1000 }, { 4034, 0x0031 }, { 4037, 0x4c00 }, { 4040, 0x02a5 },
+ { 4045, 0x5520 }, { 4050, 0x4410 }, { 4053, 0x0310 }, { 4056, 0x2304 },
+ { 4060, 0x5422 }, { 4065, 0x8034 }, { 4069, 0x0a03 }, { 4073, 0x1201 },
+ /* 0x8000 */
+ { 4076, 0x126b }, { 4083, 0x01a1 }, { 4087, 0x2000 }, { 4088, 0xa048 },
+ { 4092, 0x0448 }, { 4095, 0x4540 }, { 4099, 0x8000 }, { 4100, 0xe08d },
+ { 4107, 0x1af0 }, { 4114, 0x2840 }, { 4117, 0x8626 }, { 4123, 0x0416 },
+ { 4127, 0x5018 }, { 4131, 0x4c00 }, { 4134, 0x0032 }, { 4137, 0x2112 },
+ /* 0x8100 */
+ { 4141, 0x05e4 }, { 4147, 0x0d00 }, { 4150, 0x8a08 }, { 4154, 0x4200 },
+ { 4156, 0x4800 }, { 4158, 0x0033 }, { 4162, 0x0860 }, { 4165, 0x8703 },
+ { 4171, 0x8501 }, { 4175, 0x3400 }, { 4178, 0x0109 }, { 4181, 0xe428 },
+ { 4187, 0x2045 }, { 4191, 0x8100 }, { 4193, 0x25a8 }, { 4199, 0x5c18 },
+ /* 0x8200 */
+ { 4205, 0x35a0 }, { 4211, 0xd804 }, { 4216, 0x1c02 }, { 4220, 0x02e0 },
+ { 4224, 0x00a1 }, { 4227, 0x0200 }, { 4228, 0xc050 }, { 4232, 0x4146 },
+ { 4237, 0x6800 }, { 4240, 0xa604 }, { 4245, 0xf260 }, { 4252, 0xbb8a },
+ { 4261, 0x0000 }, { 4261, 0xc8b6 }, { 4269, 0x00e2 }, { 4273, 0x6002 },
+ /* 0x8300 */
+ { 4276, 0x023e }, { 4282, 0x0080 }, { 4283, 0x8900 }, { 4286, 0x0372 },
+ { 4292, 0x8681 }, { 4297, 0x0006 }, { 4299, 0x0000 }, { 4299, 0x0888 },
+ { 4302, 0x4600 }, { 4305, 0x4140 }, { 4308, 0x0e04 }, { 4312, 0x2000 },
+ { 4313, 0x1622 }, { 4318, 0x1048 }, { 4321, 0x8a00 }, { 4324, 0x2217 },
+ /* 0x8400 */
+ { 4330, 0x7418 }, { 4336, 0x0000 }, { 4336, 0x1200 }, { 4338, 0x2102 },
+ { 4341, 0x0200 }, { 4342, 0x0880 }, { 4344, 0x984a }, { 4350, 0x0420 },
+ { 4352, 0x0000 }, { 4352, 0x1211 }, { 4356, 0x0002 }, { 4357, 0x9904 },
+ { 4362, 0x2a55 }, { 4369, 0x0402 }, { 4371, 0x5000 }, { 4373, 0x1010 },
+ /* 0x8500 */
+ { 4375, 0x0000 }, { 4375, 0x459a }, { 4382, 0xb02a }, { 4388, 0xa000 },
+ { 4390, 0x420a }, { 4394, 0x0208 }, { 4396, 0x2708 }, { 4401, 0x0000 },
+ { 4401, 0x8090 }, { 4404, 0x0812 }, { 4407, 0x8740 }, { 4412, 0x0401 },
+ { 4414, 0xe202 }, { 4419, 0x3020 }, { 4422, 0x0630 }, { 4426, 0x8c80 },
+ /* 0x8600 */
+ { 4430, 0x04c4 }, { 4434, 0x04c0 }, { 4437, 0x2000 }, { 4438, 0x8000 },
+ { 4439, 0x4000 }, { 4440, 0xd831 }, { 4447, 0x0080 }, { 4448, 0x0200 },
+ { 4449, 0x1400 }, { 4451, 0x0008 }, { 4452, 0x0218 }, { 4455, 0x0000 },
+ { 4455, 0x0880 }, { 4457, 0x8a10 }, { 4461, 0x2010 }, { 4463, 0x4000 },
+ /* 0x8700 */
+ { 4464, 0x010d }, { 4468, 0x1500 }, { 4471, 0x0000 }, { 4471, 0x0000 },
+ { 4471, 0x4000 }, { 4472, 0x80a0 }, { 4475, 0x0140 }, { 4477, 0x0150 },
+ { 4480, 0x2004 }, { 4482, 0x8000 }, { 4483, 0x0004 }, { 4484, 0x0408 },
+ { 4486, 0x0010 }, { 4487, 0x0000 }, { 4487, 0x9001 }, { 4490, 0x4a04 },
+ /* 0x8800 */
+ { 4494, 0x0020 }, { 4495, 0x8000 }, { 4496, 0x000c }, { 4498, 0x0842 },
+ { 4501, 0x3041 }, { 4505, 0x2a8c }, { 4511, 0x090e }, { 4516, 0xc085 },
+ { 4521, 0x2906 }, { 4526, 0x40c4 }, { 4530, 0x0800 }, { 4531, 0x0010 },
+ { 4532, 0x8006 }, { 4535, 0xb230 }, { 4541, 0x0102 }, { 4543, 0x2138 },
+ /* 0x8900 */
+ { 4548, 0x0080 }, { 4549, 0x030d }, { 4554, 0x0420 }, { 4556, 0x0940 },
+ { 4559, 0x0012 }, { 4561, 0x8000 }, { 4562, 0x0410 }, { 4564, 0x8004 },
+ { 4566, 0x88ca }, { 4572, 0x0048 }, { 4574, 0x0602 }, { 4577, 0x2404 },
+ { 4580, 0x0001 }, { 4581, 0x0004 }, { 4582, 0x0008 }, { 4583, 0x0110 },
+ /* 0x8a00 */
+ { 4585, 0x550d }, { 4592, 0xa9c8 }, { 4599, 0x2428 }, { 4603, 0x0c52 },
+ { 4608, 0x0000 }, { 4608, 0x4831 }, { 4613, 0x624d }, { 4620, 0x022f },
+ { 4626, 0x30a0 }, { 4630, 0x4128 }, { 4634, 0x057b }, { 4642, 0xd205 },
+ { 4648, 0xa894 }, { 4654, 0x1844 }, { 4658, 0x6cc2 }, { 4665, 0x45c2 },
+ /* 0x8b00 */
+ { 4671, 0x4017 }, { 4676, 0x2ed1 }, { 4684, 0x1901 }, { 4688, 0x0208 },
+ { 4690, 0xc202 }, { 4694, 0x1500 }, { 4697, 0x9040 }, { 4700, 0x2091 },
+ { 4704, 0x0401 }, { 4706, 0x044d }, { 4711, 0x0000 }, { 4711, 0x0000 },
+ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 },
+ /* 0x8c00 */
+ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x8080 },
+ { 4713, 0x1542 }, { 4718, 0x0420 }, { 4720, 0x0c02 }, { 4723, 0x0600 },
+ { 4725, 0x1404 }, { 4728, 0x6000 }, { 4730, 0x9f87 }, { 4740, 0xb9d9 },
+ { 4750, 0x059f }, { 4758, 0x540a }, { 4763, 0x245d }, { 4770, 0x3810 },
+ /* 0x8d00 */
+ { 4774, 0x25b0 }, { 4780, 0x0048 }, { 4782, 0x0000 }, { 4782, 0x0000 },
+ { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0850 }, { 4785, 0x0099 },
+ { 4789, 0x0420 }, { 4791, 0x0200 }, { 4792, 0x0108 }, { 4794, 0x4408 },
+ { 4797, 0x9840 }, { 4801, 0x2800 }, { 4803, 0x810a }, { 4807, 0x0008 },
+ /* 0x8e00 */
+ { 4808, 0x8400 }, { 4810, 0x4001 }, { 4812, 0x0400 }, { 4813, 0x0021 },
+ { 4815, 0x0794 }, { 4821, 0x8200 }, { 4823, 0x0001 }, { 4824, 0x0050 },
+ { 4826, 0x2482 }, { 4830, 0x0000 }, { 4830, 0x1c00 }, { 4833, 0x0000 },
+ { 4833, 0x3c01 }, { 4838, 0x8004 }, { 4840, 0x0800 }, { 4841, 0x4900 },
+ /* 0x8f00 */
+ { 4844, 0x0228 }, { 4847, 0xf83c }, { 4856, 0x86c0 }, { 4861, 0xcb08 },
+ { 4867, 0x6230 }, { 4872, 0xa000 }, { 4874, 0x0004 }, { 4875, 0x0000 },
+ { 4875, 0x0000 }, { 4875, 0x1800 }, { 4877, 0xa148 }, { 4882, 0x0007 },
+ { 4885, 0x4024 }, { 4888, 0x0012 }, { 4890, 0x2c40 }, { 4894, 0x2285 },
+ /* 0x9000 */
+ { 4899, 0xa96f }, { 4909, 0xe6b3 }, { 4919, 0x400f }, { 4924, 0x5126 },
+ { 4930, 0x6c86 }, { 4937, 0x723b }, { 4946, 0xe20b }, { 4953, 0xb5a4 },
+ { 4961, 0x859f }, { 4970, 0x0222 }, { 4973, 0x854c }, { 4979, 0x0123 },
+ { 4983, 0x0402 }, { 4985, 0x4000 }, { 4986, 0x2102 }, { 4989, 0x2020 },
+ /* 0x9100 */
+ { 4991, 0x0004 }, { 4992, 0x0224 }, { 4995, 0x2080 }, { 4997, 0x0004 },
+ { 4998, 0x7e00 }, { 5004, 0x0004 }, { 5005, 0x1604 }, { 5009, 0x01a0 },
+ { 5012, 0x2a80 }, { 5016, 0x1004 }, { 5018, 0xd800 }, { 5022, 0x0032 },
+ { 5025, 0xfa81 }, { 5033, 0x3183 }, { 5039, 0x0488 }, { 5042, 0x0020 },
+ /* 0x9200 */
+ { 5043, 0x2000 }, { 5044, 0x4087 }, { 5049, 0x0000 }, { 5049, 0x8410 },
+ { 5052, 0x0221 }, { 5055, 0x4880 }, { 5058, 0x0074 }, { 5062, 0x0000 },
+ { 5062, 0x0029 }, { 5065, 0x114a }, { 5070, 0x0000 }, { 5070, 0x02c8 },
+ { 5074, 0x9000 }, { 5076, 0x0004 }, { 5077, 0x0410 }, { 5079, 0x1100 },
+ /* 0x9300 */
+ { 5081, 0x0010 }, { 5082, 0xc501 }, { 5087, 0xc957 }, { 5096, 0x0000 },
+ { 5096, 0x2d00 }, { 5100, 0x0810 }, { 5102, 0x4000 }, { 5103, 0x5020 },
+ { 5106, 0x1000 }, { 5107, 0x0450 }, { 5110, 0x3088 }, { 5114, 0x0001 },
+ { 5115, 0x0008 }, { 5116, 0x4002 }, { 5118, 0x0012 }, { 5120, 0x0040 },
+ /* 0x9400 */
+ { 5121, 0x0010 }, { 5122, 0x0100 }, { 5123, 0x0820 }, { 5125, 0x0120 },
+ { 5127, 0x0010 }, { 5128, 0x0806 }, { 5131, 0x0000 }, { 5131, 0xa000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ /* 0x9500 */
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0080 },
+ { 5134, 0x8a09 }, { 5139, 0x011e }, { 5144, 0x2138 }, { 5149, 0x1802 },
+ { 5152, 0x0480 }, { 5154, 0x1070 }, { 5158, 0x0006 }, { 5160, 0x0000 },
+ /* 0x9600 */
+ { 5160, 0x0000 }, { 5160, 0x1000 }, { 5161, 0x4402 }, { 5164, 0x8804 },
+ { 5167, 0x3815 }, { 5173, 0xf801 }, { 5179, 0x041c }, { 5183, 0x21e9 },
+ { 5190, 0x6c60 }, { 5196, 0x1b30 }, { 5202, 0x0588 }, { 5206, 0x0882 },
+ { 5209, 0x7af3 }, { 5220, 0x1a60 }, { 5225, 0x870c }, { 5231, 0x0ac5 },
+ /* 0x9700 */
+ { 5237, 0x00c1 }, { 5240, 0x524a }, { 5246, 0x0080 }, { 5247, 0x2205 },
+ { 5251, 0x0114 }, { 5254, 0x5042 }, { 5258, 0x2206 }, { 5262, 0x0490 },
+ { 5265, 0xa800 }, { 5268, 0x0000 }, { 5268, 0x2901 }, { 5272, 0x0000 },
+ { 5272, 0x0840 }, { 5274, 0x1008 }, { 5276, 0x0000 }, { 5276, 0x8848 },
+ /* 0x9800 */
+ { 5280, 0x156f }, { 5289, 0x018f }, { 5295, 0x2000 }, { 5296, 0x0b01 },
+ { 5300, 0x7040 }, { 5304, 0x4510 }, { 5308, 0x88a0 }, { 5312, 0x0000 },
+ { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x8100 }, { 5314, 0x0002 },
+ { 5315, 0x0090 }, { 5317, 0x9800 }, { 5320, 0xe006 }, { 5325, 0x7010 },
+ /* 0x9900 */
+ { 5329, 0x1608 }, { 5333, 0x4109 }, { 5337, 0x0101 }, { 5339, 0x0000 },
+ { 5339, 0x3a20 }, { 5344, 0x0096 }, { 5348, 0x0000 }, { 5348, 0x0000 },
+ { 5348, 0x0000 }, { 5348, 0x2240 }, { 5351, 0x7120 }, { 5356, 0x021a },
+ { 5360, 0x0002 }, { 5361, 0xa227 }, { 5368, 0x2000 }, { 5369, 0x8002 },
+ /* 0x9a00 */
+ { 5371, 0xc102 }, { 5375, 0x0200 }, { 5376, 0x0800 }, { 5377, 0x00c1 },
+ { 5380, 0x2029 }, { 5384, 0x8ca0 }, { 5389, 0x0624 }, { 5393, 0x0000 },
+ { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0100 }, { 5394, 0x0100 },
+ { 5395, 0x0000 }, { 5395, 0x0118 }, { 5398, 0x4020 }, { 5400, 0x0000 },
+ /* 0x9b00 */
+ { 5400, 0x0000 }, { 5400, 0x0400 }, { 5401, 0x0480 }, { 5403, 0x1002 },
+ { 5405, 0x803e }, { 5411, 0x0410 }, { 5413, 0x8000 }, { 5414, 0x0000 },
+ { 5414, 0x4000 }, { 5415, 0x8002 }, { 5417, 0x4800 }, { 5419, 0x0000 },
+ { 5419, 0x0200 }, { 5420, 0x0040 }, { 5421, 0x0110 }, { 5423, 0x0000 },
+ /* 0x9c00 */
+ { 5423, 0x2000 }, { 5424, 0x0025 }, { 5427, 0x0020 }, { 5428, 0x0804 },
+ { 5430, 0x0280 }, { 5432, 0x0080 }, { 5433, 0x0000 }, { 5433, 0x0000 },
+ { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 },
+ { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x02a0 }, { 5436, 0x0058 },
+ /* 0x9d00 */
+ { 5439, 0x0200 }, { 5440, 0x0800 }, { 5441, 0x0140 }, { 5443, 0x0800 },
+ { 5444, 0x0000 }, { 5444, 0x2002 }, { 5446, 0x1003 }, { 5449, 0x0004 },
+ { 5450, 0x0000 }, { 5450, 0x0000 }, { 5450, 0x8200 }, { 5452, 0x0010 },
+ { 5453, 0x0010 }, { 5454, 0x0080 }, { 5455, 0x0000 }, { 5455, 0x0704 },
+ /* 0x9e00 */
+ { 5459, 0x0000 }, { 5459, 0x4400 }, { 5461, 0x0000 }, { 5461, 0x0000 },
+ { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0xa220 },
+ { 5465, 0x0000 }, { 5465, 0xa08c }, { 5470, 0x0020 }, { 5471, 0x4830 },
+ { 5475, 0x6008 }, { 5478, 0x5912 }, { 5484, 0x0100 }, { 5485, 0x0010 },
+ /* 0x9f00 */
+ { 5486, 0x4180 }, { 5489, 0x0008 }, { 5490, 0x0001 }, { 5491, 0x0800 },
+ { 5492, 0x4c00 }, { 5495, 0x8004 }, { 5497, 0x1482 }, { 5501, 0x0080 },
+ { 5502, 0x2000 }, { 5503, 0x1021 },
+};
+static const Summary16 ksc5601_uni2indx_pageac[698] = {
+ /* 0xac00 */
+ { 5506, 0x0793 }, { 5513, 0x3eff }, { 5526, 0xb011 }, { 5531, 0x1303 },
+ { 5536, 0x2801 }, { 5539, 0x1110 }, { 5542, 0x0000 }, { 5542, 0x0593 },
+ { 5548, 0x1e7b }, { 5558, 0xb011 }, { 5563, 0x9703 }, { 5570, 0x3b01 },
+ { 5576, 0x1112 }, { 5580, 0x00a0 }, { 5582, 0x9593 }, { 5590, 0x306b },
+ /* 0xad00 */
+ { 5597, 0xb051 }, { 5603, 0x1102 }, { 5606, 0x3201 }, { 5610, 0x1130 },
+ { 5614, 0x02b0 }, { 5618, 0x0111 }, { 5621, 0x300a }, { 5625, 0xb879 },
+ { 5634, 0x1306 }, { 5639, 0x3001 }, { 5642, 0x0010 }, { 5643, 0x0080 },
+ { 5644, 0x0113 }, { 5648, 0x100b }, { 5652, 0x0011 }, { 5654, 0x9300 },
+ /* 0xae00 */
+ { 5658, 0x2b03 }, { 5664, 0x0010 }, { 5665, 0x0000 }, { 5665, 0x0593 },
+ { 5671, 0x746b }, { 5680, 0xb051 }, { 5686, 0x1323 }, { 5692, 0x3b01 },
+ { 5698, 0x1030 }, { 5701, 0x0000 }, { 5701, 0x0000 }, { 5701, 0x7000 },
+ { 5704, 0xb011 }, { 5709, 0x1303 }, { 5714, 0x2900 }, { 5717, 0x1110 },
+ /* 0xaf00 */
+ { 5720, 0x2180 }, { 5723, 0x0001 }, { 5724, 0x3000 }, { 5726, 0xb015 },
+ { 5732, 0x030e }, { 5737, 0x3001 }, { 5740, 0x0030 }, { 5742, 0x0200 },
+ { 5743, 0x0111 }, { 5746, 0x1023 }, { 5750, 0x0000 }, { 5750, 0x1300 },
+ { 5753, 0x6b81 }, { 5760, 0x1010 }, { 5762, 0x0300 }, { 5764, 0x0113 },
+ /* 0xb000 */
+ { 5768, 0x1013 }, { 5772, 0x3011 }, { 5776, 0x0100 }, { 5777, 0x0000 },
+ { 5777, 0x5530 }, { 5783, 0x22b8 }, { 5789, 0x0000 }, { 5789, 0x3000 },
+ { 5791, 0xb011 }, { 5796, 0x9702 }, { 5802, 0xfb07 }, { 5812, 0x113a },
+ { 5818, 0x03b0 }, { 5823, 0x0113 }, { 5827, 0x0021 }, { 5829, 0x0000 },
+ /* 0xb100 */
+ { 5829, 0x1b00 }, { 5833, 0x3b0d }, { 5841, 0x1138 }, { 5846, 0x03b0 },
+ { 5851, 0x0113 }, { 5855, 0x1133 }, { 5861, 0x0001 }, { 5862, 0x1300 },
+ { 5865, 0x2b05 }, { 5871, 0x111c }, { 5876, 0x0100 }, { 5877, 0x0000 },
+ { 5877, 0x1000 }, { 5878, 0xb011 }, { 5883, 0x1300 }, { 5886, 0x2a01 },
+ /* 0xb200 */
+ { 5890, 0x1930 }, { 5895, 0x02b0 }, { 5899, 0x0001 }, { 5900, 0x1010 },
+ { 5902, 0x0000 }, { 5902, 0x1100 }, { 5904, 0x0301 }, { 5907, 0x1030 },
+ { 5910, 0x0230 }, { 5913, 0x0713 }, { 5919, 0x146b }, { 5926, 0x0011 },
+ { 5928, 0x1300 }, { 5931, 0x2b05 }, { 5937, 0xf974 }, { 5947, 0x8fb8 },
+ /* 0xb300 */
+ { 5956, 0x0113 }, { 5960, 0x103b }, { 5966, 0x0000 }, { 5966, 0x0000 },
+ { 5966, 0x0000 }, { 5966, 0xd970 }, { 5974, 0x4ab0 }, { 5980, 0x0113 },
+ { 5984, 0x103b }, { 5990, 0x0011 }, { 5992, 0x1103 }, { 5996, 0x0000 },
+ { 5996, 0x5930 }, { 6002, 0x2ab1 }, { 6009, 0x0111 }, { 6012, 0x1000 },
+ /* 0xb400 */
+ { 6013, 0x0000 }, { 6013, 0x1101 }, { 6016, 0x0b01 }, { 6020, 0x0010 },
+ { 6021, 0x0000 }, { 6021, 0x0113 }, { 6025, 0x102b }, { 6030, 0x0000 },
+ { 6030, 0x0101 }, { 6032, 0x2000 }, { 6033, 0x1110 }, { 6036, 0x02a0 },
+ { 6039, 0x0111 }, { 6042, 0x3021 }, { 6046, 0xb059 }, { 6053, 0x0102 },
+ /* 0xb500 */
+ { 6055, 0x0000 }, { 6055, 0x1930 }, { 6060, 0x07b0 }, { 6066, 0x0113 },
+ { 6070, 0x383b }, { 6078, 0xb011 }, { 6083, 0x0003 }, { 6085, 0x0000 },
+ { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0d13 }, { 6091, 0x383b },
+ { 6099, 0xb011 }, { 6104, 0x0103 }, { 6107, 0x1000 }, { 6108, 0x0000 },
+ /* 0xb600 */
+ { 6108, 0x0000 }, { 6108, 0x0113 }, { 6112, 0x1020 }, { 6114, 0x0010 },
+ { 6115, 0x0100 }, { 6116, 0x0000 }, { 6116, 0x0110 }, { 6118, 0x0000 },
+ { 6118, 0x0000 }, { 6118, 0x3000 }, { 6120, 0x1811 }, { 6124, 0x0002 },
+ { 6125, 0x0000 }, { 6125, 0x0010 }, { 6126, 0x0000 }, { 6126, 0x0111 },
+ /* 0xb700 */
+ { 6129, 0x0023 }, { 6132, 0x0000 }, { 6132, 0x9300 }, { 6136, 0x0b01 },
+ { 6140, 0x1110 }, { 6143, 0x0030 }, { 6145, 0x0111 }, { 6148, 0x302b },
+ { 6154, 0xb011 }, { 6159, 0x13c7 }, { 6167, 0x3b01 }, { 6173, 0x0130 },
+ { 6176, 0x0280 }, { 6178, 0x0000 }, { 6178, 0x3000 }, { 6180, 0xb011 },
+ /* 0xb800 */
+ { 6185, 0x1383 }, { 6191, 0x2b01 }, { 6196, 0x1130 }, { 6200, 0x03b0 },
+ { 6205, 0x0011 }, { 6207, 0x300a }, { 6211, 0xb011 }, { 6216, 0x1102 },
+ { 6219, 0x2000 }, { 6220, 0x0000 }, { 6220, 0x0100 }, { 6221, 0x0111 },
+ { 6224, 0x102b }, { 6229, 0xa011 }, { 6233, 0x1302 }, { 6237, 0x2b01 },
+ /* 0xb900 */
+ { 6242, 0x0010 }, { 6243, 0x0100 }, { 6244, 0x0001 }, { 6245, 0x3000 },
+ { 6247, 0x9011 }, { 6251, 0x1302 }, { 6255, 0x2b01 }, { 6260, 0x1130 },
+ { 6264, 0x66b0 }, { 6271, 0x0000 }, { 6271, 0x3000 }, { 6273, 0xb011 },
+ { 6278, 0xd302 }, { 6284, 0x6b07 }, { 6292, 0x113a }, { 6298, 0x07b0 },
+ /* 0xba00 */
+ { 6304, 0x0103 }, { 6307, 0x0020 }, { 6308, 0x0000 }, { 6308, 0x1300 },
+ { 6311, 0x6b05 }, { 6318, 0x1138 }, { 6323, 0x03b0 }, { 6328, 0x0113 },
+ { 6332, 0x10b8 }, { 6337, 0x0000 }, { 6337, 0x1b00 }, { 6341, 0x2b05 },
+ { 6347, 0x0110 }, { 6349, 0x0300 }, { 6351, 0x0000 }, { 6351, 0x1000 },
+ /* 0xbb00 */
+ { 6352, 0xa011 }, { 6356, 0x1102 }, { 6359, 0x0a01 }, { 6362, 0x7970 },
+ { 6370, 0xa2b0 }, { 6376, 0x0111 }, { 6379, 0x100a }, { 6382, 0x0000 },
+ { 6382, 0x1100 }, { 6384, 0x0001 }, { 6385, 0x1110 }, { 6388, 0x0090 },
+ { 6390, 0x0111 }, { 6393, 0x0009 }, { 6395, 0x0000 }, { 6395, 0x9300 },
+ /* 0xbc00 */
+ { 6399, 0xbb05 }, { 6407, 0xf9f2 }, { 6418, 0x22b0 }, { 6423, 0x0113 },
+ { 6427, 0x323b }, { 6435, 0x2001 }, { 6437, 0x0000 }, { 6437, 0x0000 },
+ { 6437, 0x5930 }, { 6443, 0x06b0 }, { 6448, 0x0193 }, { 6453, 0x303b },
+ { 6460, 0xa011 }, { 6464, 0x1123 }, { 6469, 0x0000 }, { 6469, 0x1170 },
+ /* 0xbd00 */
+ { 6474, 0x02b0 }, { 6478, 0x0011 }, { 6480, 0x1010 }, { 6482, 0x0000 },
+ { 6482, 0x1301 }, { 6486, 0x0301 }, { 6489, 0x0110 }, { 6491, 0x0000 },
+ { 6491, 0x0793 }, { 6498, 0x162b }, { 6505, 0x0010 }, { 6506, 0x0101 },
+ { 6508, 0x0000 }, { 6508, 0x1130 }, { 6512, 0x0200 }, { 6513, 0x0111 },
+ /* 0xbe00 */
+ { 6516, 0x3029 }, { 6521, 0xb011 }, { 6526, 0x0000 }, { 6526, 0x0000 },
+ { 6526, 0x5130 }, { 6531, 0x0eb0 }, { 6537, 0x0513 }, { 6542, 0x383b },
+ { 6550, 0xb011 }, { 6555, 0x0303 }, { 6559, 0x0100 }, { 6560, 0x0000 },
+ { 6560, 0x0000 }, { 6560, 0x0193 }, { 6565, 0x1039 }, { 6570, 0x0000 },
+ /* 0xbf00 */
+ { 6570, 0x0302 }, { 6573, 0x3b00 }, { 6578, 0x0000 }, { 6578, 0x0000 },
+ { 6578, 0x0113 }, { 6582, 0x0023 }, { 6585, 0x0000 }, { 6585, 0x0000 },
+ { 6585, 0x0000 }, { 6585, 0x0010 }, { 6586, 0x0000 }, { 6586, 0x0001 },
+ { 6587, 0x3020 }, { 6590, 0x9011 }, { 6594, 0x0002 }, { 6595, 0x0000 },
+ /* 0xc000 */
+ { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x1000 },
+ { 6596, 0x0000 }, { 6596, 0x1102 }, { 6599, 0x0301 }, { 6602, 0x0000 },
+ { 6602, 0x0000 }, { 6602, 0x0113 }, { 6606, 0xb02b }, { 6613, 0xb079 },
+ { 6621, 0x1323 }, { 6627, 0x3b01 }, { 6633, 0x1130 }, { 6637, 0x02b0 },
+ /* 0xc100 */
+ { 6641, 0x0111 }, { 6644, 0xf021 }, { 6650, 0xb0d9 }, { 6658, 0x1343 },
+ { 6664, 0x3b01 }, { 6670, 0x1130 }, { 6674, 0x03b0 }, { 6679, 0x0111 },
+ { 6682, 0x7020 }, { 6686, 0xb051 }, { 6692, 0x1322 }, { 6697, 0x2001 },
+ { 6699, 0x1110 }, { 6702, 0x0190 }, { 6705, 0x0111 }, { 6708, 0x300b },
+ /* 0xc200 */
+ { 6713, 0xb011 }, { 6718, 0x9302 }, { 6723, 0xab01 }, { 6729, 0x0016 },
+ { 6732, 0x0100 }, { 6733, 0x0113 }, { 6737, 0x3021 }, { 6741, 0xb011 },
+ { 6746, 0x0302 }, { 6749, 0x2901 }, { 6753, 0x3130 }, { 6758, 0x02b0 },
+ { 6762, 0x0000 }, { 6762, 0x3000 }, { 6764, 0xb819 }, { 6771, 0x1b42 },
+ /* 0xc300 */
+ { 6777, 0x3301 }, { 6782, 0x1138 }, { 6787, 0x0330 }, { 6791, 0x0000 },
+ { 6791, 0x0020 }, { 6792, 0x0000 }, { 6792, 0x1300 }, { 6795, 0x3305 },
+ { 6801, 0x1110 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0000 },
+ { 6804, 0x0001 }, { 6805, 0x9300 }, { 6809, 0x2305 }, { 6814, 0x0130 },
+ /* 0xc400 */
+ { 6817, 0x0100 }, { 6818, 0x0001 }, { 6819, 0x1010 }, { 6821, 0x3011 },
+ { 6825, 0x0100 }, { 6826, 0x0000 }, { 6826, 0x1130 }, { 6830, 0x0230 },
+ { 6833, 0x0001 }, { 6834, 0x1010 }, { 6836, 0x0000 }, { 6836, 0x1100 },
+ { 6838, 0x0000 }, { 6838, 0x0000 }, { 6838, 0x0200 }, { 6839, 0x8513 },
+ /* 0xc500 */
+ { 6845, 0x1003 }, { 6848, 0x1011 }, { 6851, 0x1300 }, { 6854, 0x2b01 },
+ { 6859, 0x7730 }, { 6867, 0x63b8 }, { 6875, 0x0113 }, { 6879, 0x303b },
+ { 6886, 0xb091 }, { 6892, 0x11a2 }, { 6897, 0x0201 }, { 6899, 0x7b30 },
+ { 6907, 0x57f0 }, { 6916, 0x0113 }, { 6920, 0x702b }, { 6927, 0xf0d1 },
+ /* 0xc600 */
+ { 6935, 0x11e3 }, { 6942, 0x1b01 }, { 6947, 0x7130 }, { 6953, 0x0ab9 },
+ { 6960, 0x0113 }, { 6964, 0x303b }, { 6971, 0x9001 }, { 6974, 0x1302 },
+ { 6978, 0x2b01 }, { 6983, 0x1130 }, { 6987, 0x02b0 }, { 6991, 0x0713 },
+ { 6997, 0x302b }, { 7003, 0x3011 }, { 7007, 0x1303 }, { 7012, 0x2301 },
+ /* 0xc700 */
+ { 7016, 0x1130 }, { 7020, 0x02b0 }, { 7024, 0x0113 }, { 7028, 0x30ab },
+ { 7035, 0xb411 }, { 7041, 0x11fe }, { 7050, 0x0901 }, { 7053, 0x7130 },
+ { 7059, 0x47b8 }, { 7067, 0x05d3 }, { 7074, 0x307b }, { 7082, 0xb011 },
+ { 7087, 0x5303 }, { 7093, 0x2101 }, { 7096, 0x1110 }, { 7099, 0x0000 },
+ /* 0xc800 */
+ { 7099, 0x0513 }, { 7104, 0x306b }, { 7111, 0xb011 }, { 7116, 0x1102 },
+ { 7119, 0x3301 }, { 7124, 0x0010 }, { 7125, 0x0000 }, { 7125, 0x0513 },
+ { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 },
+ { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 },
+ /* 0xc900 */
+ { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 },
+ { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 },
+ { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 },
+ { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 },
+ /* 0xca00 */
+ { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 },
+ { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 },
+ { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 },
+ { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 },
+ /* 0xcb00 */
+ { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 },
+ { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 },
+ { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 },
+ { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 },
+ /* 0xcc00 */
+ { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 },
+ { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 },
+ { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 },
+ { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 },
+ /* 0xcd00 */
+ { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 },
+ { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 },
+ { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 },
+ { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 },
+ /* 0xce00 */
+ { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b },
+ { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 },
+ { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 },
+ { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 },
+ /* 0xcf00 */
+ { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 },
+ { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 },
+ { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 },
+ { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b },
+ /* 0xd000 */
+ { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 },
+ { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 },
+ { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 },
+ { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 },
+ /* 0xd100 */
+ { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 },
+ { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 },
+ { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b },
+ { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 },
+ /* 0xd200 */
+ { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 },
+ { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 },
+ { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 },
+ { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 },
+ /* 0xd300 */
+ { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 },
+ { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 },
+ { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 },
+ { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 },
+ /* 0xd400 */
+ { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 },
+ { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 },
+ { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 },
+ { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 },
+ /* 0xd500 */
+ { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 },
+ { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 },
+ { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 },
+ { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 },
+ /* 0xd600 */
+ { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 },
+ { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 },
+ { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 },
+ { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 },
+ /* 0xd700 */
+ { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 },
+ { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 },
+ { 7847, 0x1302 }, { 7851, 0x2b01 },
+};
+static const Summary16 ksc5601_uni2indx_pagef9[17] = {
+ /* 0xf900 */
+ { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff },
+ { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff },
+ { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff },
+ { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff },
+ /* 0xfa00 */
+ { 8112, 0x0fff },
+};
+static const Summary16 ksc5601_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff },
+ { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 },
+ { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 },
+ { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f },
+};
+
+static int
+ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0460)
+ summary = &ksc5601_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2000 && wc < 0x2670)
+ summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fa0)
+ summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xac00 && wc < 0xd7a0)
+ summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0];
+ else if (wc >= 0xf900 && wc < 0xfa10)
+ summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = ksc5601_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/src/xlibi18n/lcUniConv/mulelao.h b/src/xlibi18n/lcUniConv/mulelao.h
new file mode 100644
index 00000000..2afd7b51
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/mulelao.h
@@ -0,0 +1,78 @@
+/* $XFree86: xc/lib/X11/lcUniConv/mulelao.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
+
+/*
+ * MULELAO-1
+ */
+
+static const unsigned short mulelao_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87,
+ 0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
+ 0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
+ /* 0xc0 */
+ 0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7,
+ 0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf,
+ /* 0xd0 */
+ 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
+ 0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd,
+ 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd,
+ /* 0xf0 */
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd,
+};
+
+static int
+mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = mulelao_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char mulelao_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */
+ 0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */
+ 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */
+ 0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
+ 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc == 0x00a0)
+ c = 0xa0;
+ else if (wc >= 0x0e80 && wc < 0x0ee0)
+ c = mulelao_page0e[wc-0x0e80];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/tatar_cyr.h b/src/xlibi18n/lcUniConv/tatar_cyr.h
new file mode 100644
index 00000000..53607005
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/tatar_cyr.h
@@ -0,0 +1,123 @@
+/* $XFree86: xc/lib/X11/lcUniConv/tatar_cyr.h,v 1.3 2000/12/04 18:49:42 dawes Exp $ */
+
+/*
+ * TATAR-CYR
+ */
+
+static const unsigned short tatar_cyr_2uni[128] = {
+ /* 0x80 */
+ 0x04d8, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x04e8, 0x2039, 0x04ae, 0x0496, 0x04a2, 0x04ba,
+ /* 0x90 */
+ 0x04d9, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x98, 0x2122, 0x04e9, 0x203a, 0x04af, 0x0497, 0x04a3, 0x04bb,
+ /* 0xa0 */
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ /* 0xc0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xd0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xe0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xf0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+};
+
+static int
+tatar_cyr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) tatar_cyr_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char tatar_cyr_page00[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char tatar_cyr_page04[240] = {
+ 0x00, 0xa8, 0x00, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
+ 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, /* 0x08-0x0f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
+ 0x00, 0xb8, 0x00, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
+ 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9d, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x8e, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9c, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x8f, 0x9f, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char tatar_cyr_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+static const unsigned char tatar_cyr_page21[24] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char tatar_cyr_page22[1] = {
+ 0xb0, /* 0x16-0x16 */
+};
+
+static int
+tatar_cyr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00bc)
+ c = tatar_cyr_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x04ef)
+ c = tatar_cyr_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x203b)
+ c = tatar_cyr_page20[wc-0x2010];
+ else if (wc == 0x20ac)
+ c = 0x88;
+ else if (wc >= 0x2110 && wc < 0x2123)
+ c = tatar_cyr_page21[wc-0x2110];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/tcvn.h b/src/xlibi18n/lcUniConv/tcvn.h
new file mode 100644
index 00000000..f3d49755
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/tcvn.h
@@ -0,0 +1,134 @@
+/* $XFree86: xc/lib/X11/lcUniConv/tcvn.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
+
+/*
+ * TCVN-5712
+ */
+
+static const unsigned short tcvn_2uni_1[32] = {
+ /* 0x00 */
+ 0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ /* 0x10 */
+ 0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+};
+static const unsigned short tcvn_2uni_2[128] = {
+ /* 0x80 */
+ 0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8,
+ 0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128,
+ /* 0x90 */
+ 0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8,
+ 0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,
+ /* 0xa0 */
+ 0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110,
+ 0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,
+ /* 0xb0 */
+ 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3,
+ 0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4,
+ /* 0xc0 */
+ 0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7,
+ 0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd,
+ /* 0xd0 */
+ 0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec,
+ 0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2,
+ /* 0xe0 */
+ 0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7,
+ 0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9,
+ /* 0xf0 */
+ 0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef,
+ 0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0,
+};
+
+static int
+tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x20)
+ *pwc = (ucs4_t) tcvn_2uni_1[c];
+ else if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
+ return 1;
+}
+
+static const unsigned char tcvn_page00[96+184] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */
+ 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char tcvn_page03[40] = {
+ 0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char tcvn_page1e[96] = {
+ 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */
+ 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */
+ 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */
+ 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */
+ 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */
+ 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */
+ 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */
+ 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */
+ 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */
+ 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */
+ 0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */
+ 0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x01b8)
+ c = tcvn_page00[wc-0x00a0];
+ else if (wc >= 0x0300 && wc < 0x0328)
+ c = tcvn_page03[wc-0x0300];
+ else if (wc >= 0x1ea0 && wc < 0x1f00)
+ c = tcvn_page1e[wc-0x1ea0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/tis620.h b/src/xlibi18n/lcUniConv/tis620.h
new file mode 100644
index 00000000..beb7cd95
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/tis620.h
@@ -0,0 +1,78 @@
+/* $XFree86: xc/lib/X11/lcUniConv/tis620.h,v 1.4 2001/02/09 00:02:54 dawes Exp $ */
+
+/*
+ * TIS620-0
+ */
+
+static const unsigned short tis620_2uni[96] = {
+ /* 0xa0 */
+ 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ /* 0xb0 */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ /* 0xc0 */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ /* 0xd0 */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
+ /* 0xe0 */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ /* 0xf0 */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xa0) {
+ }
+ else {
+ unsigned short wc = tis620_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char tis620_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0e00 && wc < 0x0e60)
+ c = tis620_page0e[wc-0x0e00];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/ucs2be.h b/src/xlibi18n/lcUniConv/ucs2be.h
new file mode 100644
index 00000000..af2a586b
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/ucs2be.h
@@ -0,0 +1,32 @@
+/*
+ * UCS-2BE = UCS-2 big endian
+ */
+/* $XFree86: xc/lib/X11/lcUniConv/ucs2be.h,v 1.1 2000/11/28 17:25:09 dawes Exp $ */
+
+static int
+ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ if (n >= 2) {
+ if (s[0] >= 0xd8 && s[0] < 0xe0) {
+ return RET_ILSEQ;
+ } else {
+ *pwc = (s[0] << 8) + s[1];
+ return 2;
+ }
+ }
+ return RET_TOOFEW(0);
+}
+
+static int
+ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) {
+ if (n >= 2) {
+ r[0] = (unsigned char) (wc >> 8);
+ r[1] = (unsigned char) wc;
+ return 2;
+ } else
+ return RET_TOOSMALL;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUniConv/utf8.h b/src/xlibi18n/lcUniConv/utf8.h
new file mode 100644
index 00000000..fe189cc2
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/utf8.h
@@ -0,0 +1,110 @@
+/* $XFree86: xc/lib/X11/lcUniConv/utf8.h,v 1.3 2000/11/28 18:50:07 dawes Exp $ */
+
+/*
+ * UTF-8
+ */
+
+/* Specification: RFC 2279 */
+
+static int
+utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = s[0];
+
+ if (c < 0x80) {
+ *pwc = c;
+ return 1;
+ } else if (c < 0xc2) {
+ return RET_ILSEQ;
+ } else if (c < 0xe0) {
+ if (n < 2)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x1f) << 6)
+ | (ucs4_t) (s[1] ^ 0x80);
+ return 2;
+ } else if (c < 0xf0) {
+ if (n < 3)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x0f) << 12)
+ | ((ucs4_t) (s[1] ^ 0x80) << 6)
+ | (ucs4_t) (s[2] ^ 0x80);
+ return 3;
+ } else if (c < 0xf8) {
+ if (n < 4)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x07) << 18)
+ | ((ucs4_t) (s[1] ^ 0x80) << 12)
+ | ((ucs4_t) (s[2] ^ 0x80) << 6)
+ | (ucs4_t) (s[3] ^ 0x80);
+ return 4;
+ } else if (c < 0xfc) {
+ if (n < 5)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x03) << 24)
+ | ((ucs4_t) (s[1] ^ 0x80) << 18)
+ | ((ucs4_t) (s[2] ^ 0x80) << 12)
+ | ((ucs4_t) (s[3] ^ 0x80) << 6)
+ | (ucs4_t) (s[4] ^ 0x80);
+ return 5;
+ } else if (c < 0xfe) {
+ if (n < 6)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x01) << 30)
+ | ((ucs4_t) (s[1] ^ 0x80) << 24)
+ | ((ucs4_t) (s[2] ^ 0x80) << 18)
+ | ((ucs4_t) (s[3] ^ 0x80) << 12)
+ | ((ucs4_t) (s[4] ^ 0x80) << 6)
+ | (ucs4_t) (s[5] ^ 0x80);
+ return 6;
+ } else
+ return RET_ILSEQ;
+}
+
+static int
+utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
+{
+ int count;
+ if (wc < 0x80)
+ count = 1;
+ else if (wc < 0x800)
+ count = 2;
+ else if (wc < 0x10000)
+ count = 3;
+ else if (wc < 0x200000)
+ count = 4;
+ else if (wc < 0x4000000)
+ count = 5;
+ else if (wc <= 0x7fffffff)
+ count = 6;
+ else
+ return RET_ILSEQ;
+ if (n < count)
+ return RET_TOOSMALL;
+ switch (count) { /* note: code falls through cases! */
+ case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
+ case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
+ case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
+ case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
+ case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
+ case 1: r[0] = wc;
+ }
+ return count;
+}
diff --git a/src/xlibi18n/lcUniConv/viscii.h b/src/xlibi18n/lcUniConv/viscii.h
new file mode 100644
index 00000000..9dffbf05
--- /dev/null
+++ b/src/xlibi18n/lcUniConv/viscii.h
@@ -0,0 +1,123 @@
+/* $XFree86: xc/lib/X11/lcUniConv/viscii.h,v 1.3 2000/11/29 17:40:35 dawes Exp $ */
+
+/*
+ * VISCII1.1-1
+ */
+
+/* Specification: RFC 1456 */
+
+static const unsigned short viscii_2uni_1[32] = {
+ /* 0x00 */
+ 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ /* 0x10 */
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
+};
+static const unsigned short viscii_2uni_2[128] = {
+ /* 0x80 */
+ 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
+ 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
+ /* 0x90 */
+ 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
+ 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
+ /* 0xa0 */
+ 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead,
+ 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
+ /* 0xb0 */
+ 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
+ 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
+ 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
+ /* 0xd0 */
+ 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
+ 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
+ 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
+ /* 0xf0 */
+ 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
+ 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee,
+};
+
+static int
+viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x20)
+ *pwc = (ucs4_t) viscii_2uni_1[c];
+ else if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) viscii_2uni_2[c-0x80];
+ return 1;
+}
+
+static const unsigned char viscii_page00[64+184] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */
+ 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char viscii_page1e[96] = {
+ 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */
+ 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */
+ 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */
+ 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */
+ 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */
+ 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */
+ 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */
+ 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */
+ 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */
+ 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */
+ 0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */
+ 0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00c0 && wc < 0x01b8)
+ c = viscii_page00[wc-0x00c0];
+ else if (wc >= 0x1ea0 && wc < 0x1f00)
+ c = viscii_page1e[wc-0x1ea0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/src/xlibi18n/lcUtil.c b/src/xlibi18n/lcUtil.c
index cb439b0b..d2753368 100644
--- a/src/xlibi18n/lcUtil.c
+++ b/src/xlibi18n/lcUtil.c
@@ -22,57 +22,64 @@
*
* Author: Katsuhisa Yano TOSHIBA Corp.
* mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
*/
+/* $XFree86: xc/lib/X11/lcUtil.c,v 1.4 2001/01/17 19:41:55 dawes Exp $ */
-#include <stdio.h>
-#include <ctype.h>
-#include <X11/Xos.h>
-#include "Xlibint.h"
+#include <X11/Xlib.h>
+#include "XlcPublic.h"
-#ifdef X_NOT_STDC_ENV
-#ifndef toupper
-#define toupper(c) ((int)(c) - 'a' + 'A')
-#endif
-#endif
+/* Don't use <ctype.h> here because it is locale dependent. */
+#define set_toupper(ch) \
+ if (ch >= 'a' && ch <= 'z') \
+ ch = ch - 'a' + 'A';
+
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
int
-_XlcCompareISOLatin1(str1, str2)
- char *str1, *str2;
+_XlcCompareISOLatin1(
+ const char *str1,
+ const char *str2)
{
- register char ch1, ch2;
-
- for ( ; (ch1 = *str1) && (ch2 = *str2); str1++, str2++) {
- if (islower(ch1))
- ch1 = toupper(ch1);
- if (islower(ch2))
- ch2 = toupper(ch2);
+ unsigned char ch1, ch2;
- if (ch1 != ch2)
- break;
+ for ( ; ; str1++, str2++) {
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
}
- return *str1 - *str2;
+ return ch1 - ch2;
}
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
int
-_XlcNCompareISOLatin1(str1, str2, len)
- char *str1, *str2;
- int len;
+_XlcNCompareISOLatin1(
+ const char *str1,
+ const char *str2,
+ int len)
{
- register char ch1, ch2;
+ unsigned char ch1, ch2;
- for ( ; (ch1 = *str1) && (ch2 = *str2) && len; str1++, str2++, len--) {
- if (islower(ch1))
- ch1 = toupper(ch1);
- if (islower(ch2))
- ch2 = toupper(ch2);
-
- if (ch1 != ch2)
- break;
+ for ( ; ; str1++, str2++, len--) {
+ if (len == 0)
+ return 0;
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
}
- if (len == 0)
- return 0;
-
- return *str1 - *str2;
+ return ch1 - ch2;
}
diff --git a/src/xlibi18n/lcWrap.c b/src/xlibi18n/lcWrap.c
index d2dcfe94..373c436a 100644
--- a/src/xlibi18n/lcWrap.c
+++ b/src/xlibi18n/lcWrap.c
@@ -53,7 +53,9 @@ from The Open Group.
*
* Katsuhisa Yano TOSHIBA Corp.
*/
+/* $XFree86: xc/lib/X11/lcWrap.c,v 3.14 2002/11/01 13:43:31 alanh Exp $ */
+#include <stdlib.h>
#include "Xlibint.h"
#include "Xlcint.h"
#include <X11/Xlocale.h>
@@ -63,36 +65,13 @@ from The Open Group.
#endif
#include <X11/Xutil.h>
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-#ifdef X_NOT_STDC_ENV
-extern char *getenv();
-#endif
-
-extern void _XlcInitLoader(
-#if NeedFunctionPrototypes
- char*
-#endif
-);
-
#ifdef XTHREADS
LockInfoPtr _Xi18n_lock;
#endif
-#if NeedFunctionPrototypes
char *
XSetLocaleModifiers(
- _Xconst char *modifiers
-)
-#else
-char *
-XSetLocaleModifiers(modifiers)
- char *modifiers;
-#endif
+ const char *modifiers)
{
XLCd lcd = _XlcCurrentLC();
char *user_mods;
@@ -118,12 +97,12 @@ XSupportsLocale()
return _XlcCurrentLC() != (XLCd)NULL;
}
-Bool _XlcValidModSyntax(mods, valid_mods)
- char *mods;
- char **valid_mods;
+Bool _XlcValidModSyntax(
+ const char * mods,
+ const char * const *valid_mods)
{
int i;
- char **ptr;
+ const char * const *ptr;
while (mods && (*mods == '@')) {
mods++;
@@ -144,21 +123,21 @@ Bool _XlcValidModSyntax(mods, valid_mods)
return !mods || !*mods;
}
-static Const char *im_valid[] = {"im", (char *)NULL};
+static const char *im_valid[] = {"im", (const char *)NULL};
/*ARGSUSED*/
char *
-_XlcDefaultMapModifiers (lcd, user_mods, prog_mods)
- XLCd lcd;
- char *user_mods;
- char *prog_mods;
+_XlcDefaultMapModifiers(
+ XLCd lcd,
+ const char *user_mods,
+ const char *prog_mods)
{
int i;
char *mods;
- if (!_XlcValidModSyntax(prog_mods, (char **)im_valid))
+ if (!_XlcValidModSyntax(prog_mods, im_valid))
return (char *)NULL;
- if (!_XlcValidModSyntax(user_mods, (char **)im_valid))
+ if (!_XlcValidModSyntax(user_mods, im_valid))
return (char *)NULL;
i = strlen(prog_mods) + 1;
if (user_mods)
@@ -201,8 +180,8 @@ typedef struct _XlcLoaderListRec {
static XlcLoaderList loader_list = NULL;
void
-_XlcRemoveLoader(proc)
- XLCdLoadProc proc;
+_XlcRemoveLoader(
+ XLCdLoadProc proc)
{
XlcLoaderList loader, prev;
@@ -229,9 +208,9 @@ _XlcRemoveLoader(proc)
}
Bool
-_XlcAddLoader(proc, position)
- XLCdLoadProc proc;
- XlcPosition position;
+_XlcAddLoader(
+ XLCdLoadProc proc,
+ XlcPosition position)
{
XlcLoaderList loader, last;
@@ -262,30 +241,32 @@ _XlcAddLoader(proc, position)
}
XLCd
-_XOpenLC(name)
- char *name;
+_XOpenLC(
+ const char *name)
{
XLCd lcd;
XlcLoaderList loader;
XLCdList cur;
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
+#if !defined(X_LOCALE)
int len;
char sinamebuf[256];
- char* siname;
+ char* siname = sinamebuf;
char *_XlcMapOSLocaleName();
#endif
if (name == NULL) {
name = setlocale (LC_CTYPE, (char *)NULL);
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
- /*
- * _XlMapOSLOcaleName will return the same string or a substring
- * of name, so strlen(name) is okay
- */
- if ((len = strlen(name)) < sizeof sinamebuf) siname = sinamebuf;
- else siname = Xmalloc (len + 1);
- if (siname == NULL) return NULL;
- name = _XlcMapOSLocaleName(name, siname);
+#if !defined(X_LOCALE)
+ /*
+ * _XlMapOSLocaleName will return the same string or a substring
+ * of name, so strlen(name) is okay
+ */
+ if ((len = strlen(name)) >= sizeof sinamebuf) {
+ siname = Xmalloc (len + 1);
+ if (siname == NULL)
+ return NULL;
+ }
+ name = _XlcMapOSLocaleName(name, siname);
#endif
}
@@ -302,7 +283,8 @@ _XOpenLC(name)
}
}
- _XlcInitLoader(name);
+ if (!loader_list)
+ _XlcInitLoader();
/*
* not there, so try to get and add to list
@@ -320,14 +302,16 @@ _XOpenLC(name)
(*lcd->methods->close)(lcd);
lcd = (XLCd) NULL;
}
- break;
+ goto found;
}
}
+ lcd = NULL;
+
found:
_XUnlockMutex(_Xi18n_lock);
-#if !defined(X_NOT_STDC_ENV) && !defined(X_LOCALE)
+#if !defined(X_LOCALE)
if (siname != sinamebuf) Xfree(siname);
#endif
@@ -335,8 +319,8 @@ found:
}
void
-_XCloseLC(lcd)
- XLCd lcd;
+_XCloseLC(
+ XLCd lcd)
{
XLCdList cur, *prev;
@@ -350,6 +334,11 @@ _XCloseLC(lcd)
break;
}
}
+
+ if(loader_list) {
+ _XlcDeInitLoader();
+ loader_list = NULL;
+ }
}
/*
@@ -373,8 +362,8 @@ _XlcCurrentLC()
}
XrmMethods
-_XrmInitParseInfo(state)
- XPointer *state;
+_XrmInitParseInfo(
+ XPointer *state)
{
XLCd lcd = _XOpenLC((char *) NULL);
@@ -385,11 +374,11 @@ _XrmInitParseInfo(state)
}
int
-XmbTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
- Display *dpy;
- XTextProperty *text_prop;
- char ***list_ret;
- int *count_ret;
+XmbTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
{
XLCd lcd = _XlcCurrentLC();
@@ -401,11 +390,11 @@ XmbTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
}
int
-XwcTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
- Display *dpy;
- XTextProperty *text_prop;
- wchar_t ***list_ret;
- int *count_ret;
+XwcTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
{
XLCd lcd = _XlcCurrentLC();
@@ -417,12 +406,28 @@ XwcTextPropertyToTextList(dpy, text_prop, list_ret, count_ret)
}
int
-XmbTextListToTextProperty(dpy, list, count, style, text_prop)
- Display *dpy;
- char **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+Xutf8TextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_prop_to_list)(lcd, dpy, text_prop,
+ list_ret, count_ret);
+}
+
+int
+XmbTextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
XLCd lcd = _XlcCurrentLC();
@@ -434,12 +439,12 @@ XmbTextListToTextProperty(dpy, list, count, style, text_prop)
}
int
-XwcTextListToTextProperty(dpy, list, count, style, text_prop)
- Display *dpy;
- wchar_t **list;
- int count;
- XICCEncodingStyle style;
- XTextProperty *text_prop;
+XwcTextListToTextProperty(
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
{
XLCd lcd = _XlcCurrentLC();
@@ -450,9 +455,26 @@ XwcTextListToTextProperty(dpy, list, count, style, text_prop)
text_prop);
}
+int
+Xutf8TextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_list_to_prop)(lcd, dpy, list, count,
+ style, text_prop);
+}
+
void
-XwcFreeStringList(list)
- wchar_t **list;
+XwcFreeStringList(
+ wchar_t **list)
{
XLCd lcd = _XlcCurrentLC();
@@ -462,7 +484,7 @@ XwcFreeStringList(list)
(*lcd->methods->wc_free_string_list)(lcd, list);
}
-char *
+const char *
XDefaultString()
{
XLCd lcd = _XlcCurrentLC();
@@ -474,16 +496,16 @@ XDefaultString()
}
void
-_XlcCopyFromArg(src, dst, size)
- char *src;
- register char *dst;
- register int size;
+_XlcCopyFromArg(
+ char *src,
+ char *dst,
+ int size)
{
if (size == sizeof(long))
*((long *) dst) = (long) src;
#ifdef LONG64
else if (size == sizeof(int))
- *((int *) dst) = (int) src;
+ *((int *) dst) = (int)(long) src;
#endif
else if (size == sizeof(short))
*((short *) dst) = (short)(long) src;
@@ -498,13 +520,19 @@ _XlcCopyFromArg(src, dst, size)
}
void
-_XlcCopyToArg(src, dst, size)
- register char *src;
- register char **dst;
- register int size;
+_XlcCopyToArg(
+ char *src,
+ char **dst,
+ int size)
{
+ /* FIXME:
+ On Big Endian machines, this behaves differently than _XCopyToArg. */
if (size == sizeof(long))
*((long *) *dst) = *((long *) src);
+#ifdef LONG64
+ else if (size == sizeof(int))
+ *((int *) *dst) = *((int *) src);
+#endif
else if (size == sizeof(short))
*((short *) *dst) = *((short *) src);
else if (size == sizeof(char))
@@ -516,25 +544,25 @@ _XlcCopyToArg(src, dst, size)
}
void
-_XlcCountVaList(var, count_ret)
- va_list var;
- int *count_ret;
+_XlcCountVaList(
+ va_list var,
+ int *count_ret)
{
- register int count;
+ int count;
for (count = 0; va_arg(var, char *); count++)
- va_arg(var, XPointer);
+ (void)va_arg(var, XPointer);
*count_ret = count;
}
void
-_XlcVaToArgList(var, count, args_ret)
- va_list var;
- register int count;
- XlcArgList *args_ret;
+_XlcVaToArgList(
+ va_list var,
+ int count,
+ XlcArgList *args_ret)
{
- register XlcArgList args;
+ XlcArgList args;
*args_ret = args = (XlcArgList) Xmalloc(sizeof(XlcArg) * count);
if (args == (XlcArgList) NULL)
@@ -547,22 +575,22 @@ _XlcVaToArgList(var, count, args_ret)
}
void
-_XlcCompileResourceList(resources, num_resources)
- register XlcResourceList resources;
- register int num_resources;
+_XlcCompileResourceList(
+ XlcResourceList resources,
+ int num_resources)
{
for ( ; num_resources-- > 0; resources++)
resources->xrm_name = XrmPermStringToQuark(resources->name);
}
char *
-_XlcGetValues(base, resources, num_resources, args, num_args, mask)
- XPointer base;
- XlcResourceList resources;
- int num_resources;
- XlcArgList args;
- int num_args;
- unsigned long mask;
+_XlcGetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
{
XlcResourceList res;
XrmQuark xrm_name;
@@ -588,13 +616,13 @@ _XlcGetValues(base, resources, num_resources, args, num_args, mask)
}
char *
-_XlcSetValues(base, resources, num_resources, args, num_args, mask)
- XPointer base;
- XlcResourceList resources;
- int num_resources;
- XlcArgList args;
- int num_args;
- unsigned long mask;
+_XlcSetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
{
XlcResourceList res;
XrmQuark xrm_name;
diff --git a/src/xlibi18n/mbWMProps.c b/src/xlibi18n/mbWMProps.c
index be256575..642f3936 100644
--- a/src/xlibi18n/mbWMProps.c
+++ b/src/xlibi18n/mbWMProps.c
@@ -26,6 +26,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/lib/X11/mbWMProps.c,v 1.5 2001/12/14 19:54:10 dawes Exp $ */
#include <X11/Xlibint.h>
#include <X11/Xutil.h>
@@ -48,8 +49,8 @@ void XmbSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
wmHints, classHints)
Display *dpy;
Window w; /* window to decorate */
- char *windowName; /* name of application */
- char *iconName; /* name string for icon */
+ _Xconst char *windowName; /* name of application */
+ _Xconst char *iconName; /* name string for icon */
char **argv; /* command line */
int argc; /* size of command line */
XSizeHints *sizeHints; /* size hints for window in its normal state */
@@ -60,15 +61,14 @@ void XmbSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
XTextProperty wname, iname;
XTextProperty *wprop = NULL;
XTextProperty *iprop = NULL;
- char *locale;
if (windowName &&
XmbTextListToTextProperty(dpy, (char**)&windowName, 1,
- XStdICCTextStyle, &wname) >= Success)
+ XStdICCTextStyle, &wname) >= Success)
wprop = &wname;
if (iconName &&
XmbTextListToTextProperty(dpy, (char**)&iconName, 1,
- XStdICCTextStyle, &iname) >= Success)
+ XStdICCTextStyle, &iname) >= Success)
iprop = &iname;
XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
sizeHints, wmHints, classHints);
@@ -76,9 +76,6 @@ void XmbSetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
Xfree((char *)wname.value);
if (iprop)
Xfree((char *)iname.value);
- locale = setlocale(LC_CTYPE, (char *)NULL);
- if (locale)
- XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
- XA_STRING, 8, PropModeReplace,
- (unsigned char *)locale, strlen(locale));
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
}
diff --git a/src/xlibi18n/mbWrap.c b/src/xlibi18n/mbWrap.c
index f82ba212..97181fdd 100644
--- a/src/xlibi18n/mbWrap.c
+++ b/src/xlibi18n/mbWrap.c
@@ -50,10 +50,22 @@ from The Open Group.
*
* M. Collins OSF
*/
+/* $XFree86: xc/lib/X11/mbWrap.c,v 1.6 2001/12/14 19:54:10 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
+#if NeedFunctionPrototypes
+void
+XmbDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+#else
void
XmbDrawText(dpy, d, gc, x, y, text_items, nitems)
Display *dpy;
@@ -62,8 +74,9 @@ XmbDrawText(dpy, d, gc, x, y, text_items, nitems)
int x, y;
XmbTextItem *text_items;
int nitems;
+#endif
{
- register XFontSet fs;
+ register XFontSet fs = NULL;
register XmbTextItem *p = text_items;
register int i = nitems;
register int esc;
@@ -105,7 +118,7 @@ XmbDrawString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int text_len;
#endif
{
@@ -133,7 +146,7 @@ XmbDrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- char *text;
+ _Xconst char *text;
int text_len;
#endif
{
@@ -151,7 +164,7 @@ XmbTextEscapement(
int
XmbTextEscapement(font_set, text, text_len)
XFontSet font_set;
- char *text;
+ _Xconst char *text;
int text_len;
#endif
{
@@ -172,7 +185,7 @@ int
XmbTextExtents(font_set, text, text_len,
overall_ink_extents, overall_logical_extents)
XFontSet font_set;
- char *text;
+ _Xconst char *text;
int text_len;
XRectangle *overall_ink_extents;
XRectangle *overall_logical_extents;
@@ -203,7 +216,7 @@ XmbTextPerCharExtents(font_set, text, text_len,
buffer_size, num_chars,
max_ink_extents, max_logical_extents)
XFontSet font_set;
- char *text;
+ _Xconst char *text;
int text_len;
XRectangle *ink_extents_buffer;
XRectangle *logical_extents_buffer;
diff --git a/src/xlibi18n/utf8WMProps.c b/src/xlibi18n/utf8WMProps.c
new file mode 100644
index 00000000..bed38584
--- /dev/null
+++ b/src/xlibi18n/utf8WMProps.c
@@ -0,0 +1,103 @@
+/* $TOG: mbWMProps.c /main/6 1998/02/06 17:44:24 kaleb $ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 2000 by Bruno Haible
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation, and that the name of Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL Bruno Haible BE LIABLE FOR 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 THIS SOFTWARE.
+ */
+/* $XFree86: xc/lib/X11/utf8WMProps.c,v 1.2 2001/12/14 19:54:11 dawes Exp $ */
+
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+
+#if NeedFunctionPrototypes
+void Xutf8SetWMProperties (
+ Display *dpy,
+ Window w,
+ _Xconst char *windowName,
+ _Xconst char *iconName,
+ char **argv,
+ int argc,
+ XSizeHints *sizeHints,
+ XWMHints *wmHints,
+ XClassHint *classHints)
+#else
+void Xutf8SetWMProperties (dpy, w, windowName, iconName, argv, argc, sizeHints,
+ wmHints, classHints)
+ Display *dpy;
+ Window w; /* window to decorate */
+ _Xconst char *windowName; /* name of application */
+ _Xconst char *iconName; /* name string for icon */
+ char **argv; /* command line */
+ int argc; /* size of command line */
+ XSizeHints *sizeHints; /* size hints for window in its normal state */
+ XWMHints *wmHints; /* miscelaneous window manager hints */
+ XClassHint *classHints; /* resource name and class */
+#endif
+{
+ XTextProperty wname, iname;
+ XTextProperty *wprop = NULL;
+ XTextProperty *iprop = NULL;
+
+ if (windowName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&windowName, 1,
+ XStdICCTextStyle, &wname) >= Success)
+ wprop = &wname;
+ if (iconName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&iconName, 1,
+ XStdICCTextStyle, &iname) >= Success)
+ iprop = &iname;
+ XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
+ sizeHints, wmHints, classHints);
+ if (wprop)
+ Xfree((char *)wname.value);
+ if (iprop)
+ Xfree((char *)iname.value);
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
+}
diff --git a/src/xlibi18n/utf8Wrap.c b/src/xlibi18n/utf8Wrap.c
new file mode 100644
index 00000000..bde4647b
--- /dev/null
+++ b/src/xlibi18n/utf8Wrap.c
@@ -0,0 +1,255 @@
+/* $TOG: mbWrap.c /main/7 1998/02/06 17:44:30 kaleb $ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
+ * LIABLE FOR 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 THIS SOFTWARE.
+ *
+ * M. Collins OSF
+ */
+/*
+ * Copyright 2000 by Bruno Haible
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation, and that the name of Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL Bruno Haible BE LIABLE FOR 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 THIS SOFTWARE.
+ */
+/* $XFree86: xc/lib/X11/utf8Wrap.c,v 1.3 2001/12/14 19:54:11 dawes Exp $ */
+
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+#if NeedFunctionPrototypes
+void
+Xutf8DrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+#else
+void
+Xutf8DrawText(dpy, d, gc, x, y, text_items, nitems)
+ Display *dpy;
+ Drawable d;
+ GC gc;
+ int x, y;
+ XmbTextItem *text_items;
+ int nitems;
+#endif
+{
+ register XFontSet fs = NULL;
+ register XmbTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->utf8_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->utf8_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+#if NeedFunctionPrototypes
+void
+Xutf8DrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+#else
+void
+Xutf8DrawString(dpy, d, font_set, gc, x, y, text, text_len)
+ Display *dpy;
+ Drawable d;
+ XFontSet font_set;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int text_len;
+#endif
+{
+ (void)(*font_set->methods->utf8_draw_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+
+#if NeedFunctionPrototypes
+void
+Xutf8DrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+#else
+void
+Xutf8DrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
+ Display *dpy;
+ Drawable d;
+ XFontSet font_set;
+ GC gc;
+ int x, y;
+ _Xconst char *text;
+ int text_len;
+#endif
+{
+ (*font_set->methods->utf8_draw_image_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+#if NeedFunctionPrototypes
+int
+Xutf8TextEscapement(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len)
+#else
+int
+Xutf8TextEscapement(font_set, text, text_len)
+ XFontSet font_set;
+ _Xconst char *text;
+ int text_len;
+#endif
+{
+ return (*font_set->methods->utf8_escapement) (font_set,
+ (char *)text, text_len);
+}
+
+#if NeedFunctionPrototypes
+int
+Xutf8TextExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+#else
+int
+Xutf8TextExtents(font_set, text, text_len,
+ overall_ink_extents, overall_logical_extents)
+ XFontSet font_set;
+ _Xconst char *text;
+ int text_len;
+ XRectangle *overall_ink_extents;
+ XRectangle *overall_logical_extents;
+#endif
+{
+ return (*font_set->methods->utf8_extents) (font_set,
+ (char *)text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+#if NeedFunctionPrototypes
+Status
+Xutf8TextPerCharExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+#else
+Status
+Xutf8TextPerCharExtents(font_set, text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars,
+ max_ink_extents, max_logical_extents)
+ XFontSet font_set;
+ _Xconst char *text;
+ int text_len;
+ XRectangle *ink_extents_buffer;
+ XRectangle *logical_extents_buffer;
+ int buffer_size;
+ int *num_chars;
+ XRectangle *max_ink_extents;
+ XRectangle *max_logical_extents;
+#endif
+{
+ return (*font_set->methods->utf8_extents_per_char)
+ (font_set, (char *)text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/src/xlibi18n/wcWrap.c b/src/xlibi18n/wcWrap.c
index 621423d3..0f1a5ee8 100644
--- a/src/xlibi18n/wcWrap.c
+++ b/src/xlibi18n/wcWrap.c
@@ -51,10 +51,22 @@ from The Open Group.
*
* M. Collins OSF
*/
+/* $XFree86: xc/lib/X11/wcWrap.c,v 1.6 2001/12/14 19:54:11 dawes Exp $ */
#include "Xlibint.h"
#include "Xlcint.h"
+#if NeedFunctionPrototypes
+void
+XwcDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XwcTextItem *text_items,
+ int nitems)
+#else
void
XwcDrawText(dpy, d, gc, x, y, text_items, nitems)
Display *dpy;
@@ -63,8 +75,9 @@ XwcDrawText(dpy, d, gc, x, y, text_items, nitems)
int x, y;
XwcTextItem *text_items;
int nitems;
+#endif
{
- register XFontSet fs;
+ register XFontSet fs = NULL;
register XwcTextItem *p = text_items;
register int i = nitems;
register int esc;
@@ -106,7 +119,7 @@ XwcDrawString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
#endif
{
@@ -133,7 +146,7 @@ XwcDrawImageString(dpy, d, font_set, gc, x, y, text, text_len)
XFontSet font_set;
GC gc;
int x, y;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
#endif
{
@@ -151,7 +164,7 @@ XwcTextEscapement(
int
XwcTextEscapement(font_set, text, text_len)
XFontSet font_set;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
#endif
{
@@ -171,7 +184,7 @@ int
XwcTextExtents(font_set, text, text_len,
overall_ink_extents, overall_logical_extents)
XFontSet font_set;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
XRectangle *overall_ink_extents;
XRectangle *overall_logical_extents;
@@ -201,7 +214,7 @@ XwcTextPerCharExtents(font_set, text, text_len,
buffer_size, num_chars,
max_ink_extents, max_logical_extents)
XFontSet font_set;
- wchar_t *text;
+ _Xconst wchar_t *text;
int text_len;
XRectangle *ink_extents_buffer;
XRectangle *logical_extents_buffer;